0

所以我写了这个应该打开文件并将其输出到屏幕的小类。我的文件是十六进制文件,所以当我在记事本中打开它时,它会输出取决于编码的随机字符。所以我想我必须先将它转换为二进制然后输出(无论如何我都想要它)。

然而,java 在转换时给了我一个错误,并表明它被解释为文本。

怎么了?

班级:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.*;


public class fileClass {

    private Scanner s;
    private String content;

    public void openFile(String fileName) {
        try {
            s = new Scanner(new FileReader(fileName));
            content = s.next();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        finally{
            s.close();
        }
    }


    public String HexToBinary(String Hex) {
        int i = Integer.parseInt(Hex, 16);
        String Bin = Integer.toBinaryString(i);
        return Bin;
    }

    public void output() {
        System.out.println(HexToBinary(content));
    }
}

错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "tîxl¸?
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at fileClass.HexToBinary(fileClass.java:29)
    at fileClass.output(fileClass.java:36)
    at test.main(test.java:8)
4

1 回答 1

2

不要使用扫描仪或 FileReader,因为它们是基于文本的。我猜你只想读取一个二进制文件,FileInputStream就足够了。

于 2013-03-12T18:23:53.533 回答