0

そこで、ファイルを開いて画面に出力することになっているこの小さなクラスを書きました。私のファイルは16進ファイルなので、メモ帳で開くと、エンコーディングに依存するランダムな文字が出力されます。したがって、最初にバイナリに変換してから出力する必要があると考えました(とにかくバイナリで欲しい)。

ただし、変換中に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 に答える