Я пытаюсь записать значения больше 256, используя метод DataOupPutStream.write()
. Когда я попытаюсь прочитать то же значение, используя DataInputStream.read()
, он вернет 0. Итак, я использовал DataOutputStream.writeInt()
и DataInputStream.readInt()
методы для записи и получения значений больше 256, и он работает нормально.Чтение целочисленных значений из двоичного файла с использованием Java
См. Нижеприведенный фрагмент кода. Мне хотелось бы знать поведение компилятора как то, что он делает в in.readInt()
внутри оператора while
.
FileOutputStream fout = new FileOutputStream("T.txt");
BufferedOutputStream buffOut = new BufferedOutputStream(fout);
DataOutputStream out = new DataOutputStream(fout);
Integer output = 0;
out.writeInt(257);
out.writeInt(2);
out.writeInt(2123);
out.writeInt(223);
out.writeInt(2132);
out.close();
FileInputStream fin = new FileInputStream("T.txt");
DataInputStream in = new DataInputStream(fin);
while ((output = in.readInt()) > 0) {
System.out.println(output);
}
Выход, когда я побежал этот фрагмент является:
Exception in thread "main" java.io.EOFException
at java.io.DataInputStream.readInt(Unknown Source)
at compress.DataIOStream.main(DataIOStream.java:34)
257
2
2123
223
2132
Но когда я побежал в режиме отладки я получаю следующий вывод:
2123
223
2132
Exception in thread "main" java.io.EOFException
at java.io.DataInputStream.readInt(Unknown Source)
at compress.DataIOStream.main(DataIOStream.java:34)
http://download.oracle.com/javase/6/docs/api/java/io/DataInputStream.html#readInt%28%29 –