java nio中的 buffer一个不懂的问题

来源:百度知道 编辑:UC知道 时间:2024/07/02 15:47:11
先看下面的代码
while (true) {
buffer.clear();
int r = fcin.read( buffer );

if (r==-1) {
break;
}

buffer.flip();
fcout.write( buffer );
}
问:那个read方法不是一次全部读入buffer里面么?为什么还要用循环?

buffer是一个缓存,当读入流的时候,数据讲存入缓存中,当缓存满了,才刷新缓存。并不是将数据一次存入,缓存满后还要将数据导出去。然后根据数据长度返回一个int型,到超过数据原本的长度,返回的是-1.

variable "buffer" has a size limit when you declare it, so that you need the loop to read all the data.