首页 新闻 会员 周边 捐助

inputstream.read方法问题

0
悬赏园豆:5 [待解决问题]

最后1个read都到了文件的末尾了,返回-1了,按理说,这时再去read,应该是空,read应该阻塞,后面内容就不应该执行了啊,为什么后面两个read还返回-1,还能输出。
还请大佬给我解释这涉及到read阻塞么?和new scanner(system.in).netInt()阻塞等待键盘输入 区别在哪

fangpengcheng_方鹏程的主页 fangpengcheng_方鹏程 | 菜鸟二级 | 园豆:206
提问于:2020-06-22 12:57
< >
分享
所有回答(3)
0

return the next byte of data, or -1 if the end of the stream is reached
API上不就这么写的吗

yytxdy | 园豆:1680 (小虾三级) | 2020-06-22 13:44

关注点不是这个

支持(0) 反对(0) fangpengcheng_方鹏程 | 园豆:206 (菜鸟二级) | 2020-06-22 19:47

@xiaofang.bk: 读文件不涉及阻塞好不啦,和new scanner(system.in).netInt()又不一样

支持(0) 反对(0) yytxdy | 园豆:1680 (小虾三级) | 2020-06-23 09:08
0

这个不是 你自己写的末尾输出 三个 System.out.println(bte);???

Ankermaker | 园豆:251 (菜鸟二级) | 2020-06-22 19:32

看清问题

支持(0) 反对(0) fangpengcheng_方鹏程 | 园豆:206 (菜鸟二级) | 2020-06-22 19:39
0

首先你的试验已经证明了read不会阻塞。
你去看看源码InputStream的read方法不会因为读取不到内容就阻塞掉。
Scanner.next方法有可能产生阻塞,This method may block while waiting for input to scan, ...
推荐去看看源码。

你学会了吗 | 园豆:202 (菜鸟二级) | 2021-01-27 15:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册