gpt4 book ai didi

java - ObjectInputStream available() 方法未按预期工作 (Java)

转载 作者:行者123 更新时间:2023-11-29 06:35:30 25 4
gpt4 key购买 nike

我一直在试图弄清楚为什么我编写的用于从文件中读取对象的方法不起作用,并意识到即使文件未完全读取,ObjectInputStream 的 available() 方法也会返回 0。在我使用 FileInputStream available() 方法来确定 EOF 之后,该方法确实起作用了!

为什么该方法不适用于 ObjectInputStram 而适用于 FileInputStream?

代码如下:

public static void getArrFromFile() throws IOException, ClassNotFoundException {
Product p;
FileInputStream in= new FileInputStream(fName);
ObjectInputStream input= new ObjectInputStream(in);
while(in.available()>0){
p=(Product)input.readObject();
if (p.getPrice()>3000)
System.out.println(p);
}
input.close();

附言-我读过我应该为此使用 EOF 异常而不是 available(),但我只是想知道为什么这不起作用。

非常感谢!!!

最佳答案

因为,正如 javadoc 所说,available() 返回可以无阻塞 读取的估计字节数。基础 InputStream 实现总是返回 0,因为这是一个有效的估计。但无论它返回什么,它返回 0 的事实并不意味着没有什么可读的了。只是流不能保证至少一个字节可以不阻塞地读取。

关于java - ObjectInputStream available() 方法未按预期工作 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21662190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com