我写了一个小代码,说
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,为什么?
我写了一个小代码,说
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,为什么?
如果该方法int
返回的read()
值为 -1,则您已到达文件末尾。
编辑重新编辑,该read()
方法返回的值是一个计数。
第一次,您读取 10 个字节,缓冲区的容量为 10 个字节,因此您 (a) 打印10
并 (b) 填充缓冲区。
在所有其他时间,缓冲区已经满了,因为你没有clear()
,所以没有读取任何内容并返回零,所以你打印了零。
如果你buffer.clear()
在第一个之后调用read()
,下一个read()
将返回-1。
如果 reader 返回的 int 为 -1,则您已到达文件末尾。
例如:-
Reader reader = new FileReader("yourfilename");
int data = reader.read();
if(data != -1){
// your code
}