1
A
回答
1
read()方法接受一个字节数组,它将从流或读取器中填充。
如果没有可用于填充缓冲足够的数据,它可以
- 等到足够的数据可用
- 立即返回,但只提供了可用的数据,而不完全填充缓冲区。
标准实施方式确实是两者的混合:等待至少有一个字节可用。
注意:第二种情况意味着read()可能完全没有任何数据返回。
+0
它没有这些东西。它会阻塞,直到*至少有一个*字节可用,并返回实际读取的计数字节。请参阅Javadoc以获取InputStream.read()。 -1 – EJP 2012-08-13 13:11:15
2
"read will not always fill a buffer"
上面这句话意味着Buffer
有一定size
这是自动刷新时填写,但是假设数据是读入缓冲区不够填充缓冲区 ...然后你需要手动刷新它。
为了进一步了解详情阅读SCJP Programmer guide
凯西塞拉利昂或Thinking in Java's
IO章。
1
它将阻塞,直到至少有一个字节可用,并且返回可以在该点读取的字节数而不会再次阻塞。看到Javadoc。
我不知道为什么,但它添加了“家庭作业”标签,只是为了澄清这一点,这不是一个家庭作业问题,我只是想扩展我的知识和理解。 – Popokoko 2012-08-13 11:24:56