问题描述
我正在使用DataInputStream并且有一个关于EOFExceptions的问题。
I am working with a DataInputStream and had a question about EOFExceptions.
根据java docs:
According to java docs:
此异常数据
输入流主要用于信号流的结束。
注意许多其他输入操作
在
流的末尾返回一个特殊值,而不是抛出
异常。
This exception is mainly used by data input streams to signal end of stream. Note that many other input operations return a special value on end of stream rather than throwing an exception.
这是否意味着当生成EOFException时,流不会再次打开?这是否意味着你永远不会期待它的更多数据?
Does this mean that when a EOFException is generated, the stream will not NEVER open again? Does it mean you should NEVER expect any more data from it ever?
如果输出流连接到输入流并调用outputstream.close(),输入流将接收EOFException还是IOException?
If an outputstream is connected to an inputstream and outputstream.close() is called, will an inputstream receive the EOFException or an IOException?
IOException被描述为:
An IOException is described as:
输出流上的close是否会在datainputstream端产生EOFException或IOException?
Does a close on the outputstream produce either a EOFException or an IOException on the datainputstream side?
推荐答案
关键字是意外。
如果您使用DataInputStream并读取4字节整数但流中只剩下3个字节,您将获得EOFException。
If you use DataInputStream and read a 4 byte integer but there were only 3 bytes remaining in the stream you'll get an EOFException.
但是如果你在流的末尾调用read(),那么你只需返回-1并且没有例外。
But if you call read() at the end of stream you'll just get -1 back and no exception.
这篇关于何时会在JAVA的流中发生EOFException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!