このようなバイナリファイルに書き込む場合:
byte[] content = {1,2,3};
FileOutputStream output = new FileOutputStream("data.bin");
DataOutputStream fileName = new DataOutputStream(output);
fileName.writeInt(content.length);
for (int i = 0; i < content.length; i++)
{
fileName.writeInt(content[i]);
System.out.println(content[i]);
}
fileName.close();
FileInputStream / DataInputStreamと.readInt()を使用して読み戻すと、すべて問題ありません。(.skip(4);を使用する場合、最初の値には書き込まれた桁数である値が含まれているように見えるため)
ただし、byte[]の内容がスキャナーを使用した入力に置き換えられた場合。
java.util.Scanner in = new java.util.Scanner(System.in);
String inputAsString = in.nextLine();
byte[] content = inputAsString.getBytes();
バイナリファイルに10進数で書き込まれていることに気づきました。1は49になり、2は50になり、3は51になります...私の質問は、ハードコードされたバイト配列を使用した最初の例のように、どうすれば1、2、3に読み戻すことができるかです。