【发布时间】:2014-01-19 12:02:07
【问题描述】:
有没有办法询问 DataInputStream 是否有要读取的内容? .readByte() 只会挂起它,等待读取一个字节:( 还是我总是必须发送一个虚拟字节,以确保它总是能看到一些东西?
【问题讨论】:
标签: java sockets networking port datainputstream
有没有办法询问 DataInputStream 是否有要读取的内容? .readByte() 只会挂起它,等待读取一个字节:( 还是我总是必须发送一个虚拟字节,以确保它总是能看到一些东西?
【问题讨论】:
标签: java sockets networking port datainputstream
dis.available();
返回: 可以不阻塞地从此输入流中读取(或跳过)的字节数的估计值。
这是你要找的吗?
也可以在这里查看答案。您可能会获得更多信息。 "available" of DataInputStream from Socket
【讨论】:
看看
public int available() throws IOException
根据文档它“返回可以读取的字节数的估计值”
所以你应该打电话给dis.available()
【讨论】:
当读取超过文件末尾时,会引发 EOFException。所以你可以说没有更多的数据要读取。例如:
DataInputStream inputStream = new DataInputStream(new FileInputStream(file));
int data = 0;
try {
while (true) {
data += inputStream.readInt();
}
} catch (EOFException e) {
System.out.println("All data were read");
System.out.println(data);
}
【讨论】: