问答详情
源自:4-5 字节缓冲流

字节缓冲流BufferedInputStream读取结束返回-1的不解之处

如下代码中:

BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));
int c;
while((c = bis.read()) != -1) {
    bos.write(c);
}

API中提示说 java.io.BufferedInputStream.read()

Returns:

the next byte of data, or -1 if the end of the stream is reached.

那么读取的字节如果是1111 1111 不就是-1?

这个字节如果是我们的数据,而不是文件读取结束标志呢?

为什么可以用-1来判定文件读取结束?


提问者:慕姐3585284 2016-09-12 10:12

个回答

  • chrealcool
    2016-12-07 17:29:50

    单字节读取,无符号返回0-255数,若是1111 1111则是返回255而不是-1,所以出现-1的情况只能是没有字节可以读取也就是作为文件读取结束的标志。

  • 慕姐3585284
    2016-09-20 13:28:24

    好像是这么一回事:

    单个字节读取,字节以无符号整数返回0~255,不会有负数返回,

    所以读取单个字节可以用返回值-1表示文件读取结束。

  • XhstormR
    2016-09-12 13:49:39

    你只需要知道它返回 -1 就是读完了就行了,望采纳。

  • qq_宇恒_0
    2016-09-12 12:27:18

    -1来判定文件读取结束,是一种约定的方法!表示文件读取完成!