0

数値(バイト)のリストをファイルに保存して、バイト[]に取得できるようにしようとしています。

59 20 60 21 61 22 62 23 63 24 64 25 65 26 66 27 67 28 68 29 
67 30 66 31 65 32 64 33 63 34 62 35 61 36 60 37 59 38
66 29 65 30 64 31 63 32 62 33 61 34 60 35 59 36 58 37
65 28 64 29 63 30 62 31 61 32 60 33 59 34 58 35 57 36...

それらをテキスト ファイルに保存しようとしましたが、関連するコードが正しく読み取れないようです。

    try {
        File f = new File("cube_mapping2.txt");
        array = new byte[file.size()]
        FileInputStream stream = new FileInputStream(f);
        stream.read(array);
    } catch (Exception e) {
        e.printStackTrace();
    }

ファイルを保存してFileInputReader.read(byte[] buffer)、配列にバイトを入力する適切な方法はありますか?

4

3 に答える 3

3

私はScannerを使用しています。このようなもの:

public static void main(String[] args) throws IOException {
    InputStream stream = new FileInputStream("cube_mapping2.txt");
    Scanner s = new Scanner(stream);
    List<Byte> bytes = new ArrayList<Byte>();
    while (s.hasNextByte()) {
        bytes.add(s.nextByte());
    }
    System.out.println(bytes);
}

正確な入力を含むファイルでこれをテストしたところ、機能しました。出力は次のとおりです。

[59, 20, 60, 21, 61, 22, 62, 23, 63, 24, 64, 25, 65, 26, 66, 27, 67, 28, 68, 29, 67, 30, 66, 31, 65, 32, 64, 33, 63, 34, 62, 35, 61, 36, 60, 37, 59, 38, 66, 29, 65, 30, 64, 31, 63, 32, 62, 33, 61, 34, 60, 35, 59, 36, 58, 37, 65, 28, 64, 29, 63, 30, 62, 31, 61, 32, 60, 33, 59, 34, 58, 35, 57, 36]
于 2011-08-01T02:25:23.080 に答える
2

FileInputStreamはバイナリファイルで機能します。投稿したコードはバイナリファイルから読み取られますが、stream.read(array)が配列の長さまで読み取るため、正しくありません。配列全体を読み取ることを約束するものではありません。read(array)からの戻り値は、実際に読み取られたバイト数です。必要なすべてのデータを確実に取得するには、read()呼び出しをループに入れる必要があります。

実際の質問に答えるには、stream.read(array)がファイルを読み戻すことができるようにファイルに書き込むには、FileOutputStream.write(array)を使用します。

バイナリファイルではなくテキストファイルに満足している場合は、@Bohemianの回答を参照してください。

于 2011-08-01T03:03:33.417 に答える
0
array = new byte[file.size()]

ということは、2 つの数字ごとに個別のマークを格納するスペースが残っていないということですか? バイト配列によると、それぞれが2つのスペースのみである場合、2つのスペースの一時バイト配列を使用して、ファイルに保存する各バイトを読み取ることができます。何かのようなもの

byte[] temp = new byte[2];
stream.read(temp);

これにより、バイト番号を1つずつ確実に読み取ることができます。

于 2011-08-01T02:35:57.603 に答える