java中FileInputStream.availale()方法疑问

书中有关对象输入输出的片段代码如下:while(fileInputStream.available()>0){list.add((person)objInputStrea... 书中有关对象输入输出的片段代码如下:
while(fileInputStream.available() > 0){
list.add( (person) objInputStream.readObject() );
}
fileInputStream是FileInputStream的对象。 list 是集合List的对象
这段代码是从文件中读取Object对象,强转为 Person类,存放到集合 list中。
问题是: available() 返回从此输入流中可以读取(或跳过)的剩余字节数的估计值,
available()>0我想应该是个死循环呀,调试的时候发现读取一个对象后available 的字节数再减少。
它有这个功能自己会减少,就像是文件指针在走动一样!?
展开
 我来答
无野楼升域醉0t
2019-01-10 · TA获得超过8552个赞
知道小有建树答主
回答量:1498
采纳率:88%
帮助的人:504万
展开全部

available方法是native的本地方法

接口说明中有一点值的注意:

返回估计的剩余字节,这是因为底层很可能只是读取了操作系统给出的文件描述,不一定准确。

这会不会造成文件读取不全或超出文件大小。。。没仔细研究过,不过既然给了这个方法内部应该有其他处理来保证安全。

百度网友a242a41
2019-01-10 · 超过16用户采纳过TA的回答
知道答主
回答量:231
采纳率:24%
帮助的人:18.6万
展开全部
这种函数正常有风险的,和数组的长度一样是可变的,正常情况下需要用一个临时变量来存储这个值,否则程序可能会陷入漏洞。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
传统文化馆
2019-01-10 · TA获得超过329个赞
知道小有建树答主
回答量:902
采纳率:0%
帮助的人:228万
展开全部
一直在读取,直到读取完,文件就读取完毕了,就不大于0了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式