【发布时间】:2011-09-02 09:38:35
【问题描述】:
我正在尝试使用DataOupPutStream.write() 方法写入大于 256 的值。当我尝试使用 DataInputStream.read() 读取相同的值时,它将返回 0。因此,我使用 DataOutputStream.writeInt() 和 DataInputStream.readInt() 方法来写入和检索大于 256 的值,它工作正常。
参考下面的代码 sn-p 我想知道编译器的行为,就像它在 while 语句中的 in.readInt() 中所做的那样。
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);
}
我运行这个 sn-p 时的输出是:
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)
【问题讨论】:
标签: java file-io binaryfiles java-io