我正在尝试使用写入大于 256 的值DataOupPutStream.write()
方法。当我尝试使用读取相同的值时DataInputStream.read()
它将返回 0。所以,我用了DataOutputStream.writeInt()
and DataInputStream.readInt()
方法来写入和检索大于 256 的值,并且工作正常。
请参阅下面的代码片段,我想知道编译器的行为,就像它在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)
readInt() 方法与其他方法一样。您将收到 EOFException,因为这就是 readInt() 的 Javadoc 所说的当您到达文件末尾时将会发生的情况。
当我跑步时
DataOutputStream out = new DataOutputStream(new FileOutputStream("T.txt"));
out.writeInt(257);
out.writeInt(2);
out.writeInt(2123);
out.writeInt(223);
out.writeInt(2132);
out.close();
DataInputStream in = new DataInputStream(new FileInputStream("T.txt"));
try {
while (true)
System.out.println(in.readInt());
} catch (EOFException ignored) {
System.out.println("[EOF]");
}
in.close();
我在正常和调试模式下得到这个。
257
2
2123
223
2132
[EOF]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)