为了账号安全,请及时绑定邮箱和手机立即绑定

字节缓冲流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来判定文件读取结束?


正在回答

4 回答

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

0 回复 有任何疑惑可以回复我~

好像是这么一回事:

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

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

2 回复 有任何疑惑可以回复我~

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

1 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信