1

我正在学习 I/O、Files 和 Sockets,但我不明白这句话的意思

读取不会总是填满缓冲区

这是什么意思?有人对我有什么解释吗?

4

3 回答 3

2
"read will not always fill a buffer"

上面这句话的意思是Buffer有一定的,填充的时候sizeAutoFlushed,但是假设要读入Buffer的数据不足以填充Buffer ……那么就需要手动flush了。

有关更多详细信息,请阅读SCJP Programmer guideKathy Sierra 或Thinking in Java's IO 章节

于 2012-08-13T11:17:52.050 回答
1

read() 方法接受一个字节数组,它将从流或读取器中填充。

如果没有足够的数据来填充缓冲区,它可以

  • 等到有足够的数据可用
  • 立即返回,但只提供可用数据而不完全填充缓冲区。

标准实现混合了两者:它等待至少一个字节可用。

注意:第二种情况意味着 read() 可能在没有任何数据的情况下返回。

于 2012-08-13T11:20:04.083 回答
1

它将阻塞直到至少有一个字节可用,并返回在该点可以读取的字节数而不会再次阻塞。请参阅 Javadoc。

于 2012-08-14T00:10:34.260 回答