0

我写了一个小代码,说

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,为什么?

4

2 回答 2

2

如果该方法int返回的read()值为 -1,则您已到达文件末尾。

编辑重新编辑,该read()方法返回的值是一个计数。

第一次,您读取 10 个字节,缓冲区的容量为 10 个字节,因此您 (a) 打印10并 (b) 填充缓冲区。

在所有其他时间,缓冲区已经满了,因为你没有clear(),所以没有读取任何内容并返回零,所以你打印了零。

如果你buffer.clear()在第一个之后调用read(),下一个read()将返回-1。

于 2014-04-11T04:36:18.083 回答
1

如果 reader 返回的 int 为 -1,则您已到达文件末尾。

例如:-

Reader reader = new FileReader("yourfilename");

int data = reader.read();

if(data != -1){
 // your code
}
于 2014-04-11T04:24:20.613 回答