我写了一个小代码,说
ByteBuffer buffer = ByteBuffer.allocate(10);
int w= fc.read(buffer);
System.out.println(w);
w= fc.read(buffer);
System.out.println(w);
w= fc.read(buffer);
System.out.println(w);
说文件包含10个字节,屏幕上显示的结果是10,0,0,但是没有-1作为文件的结尾,为什么?
答案 0 :(得分:2)
如果int
方法返回的read()
为-1,则表示您已到达文件的末尾。
编辑重新编辑,read()
方法返回的值为计数。
第一次,你读取10个字节,缓冲区的容量是10个字节,所以你(a)打印10
和(b)填充缓冲区。
所有其他时间,缓冲区已经满了,因为你没有clear()
它,所以没有读取任何内容并返回零,所以你打印零。
如果您在第一个buffer.clear()
后拨打read()
,则下一个read()
将返回-1。
答案 1 :(得分:0)
如果读者返回的int为-1,那么您已到达文件末尾。
例如: -
Reader reader = new FileReader("yourfilename");
int data = reader.read();
if(data != -1){
// your code
}