如下代码中:
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来判定文件读取结束?
单字节读取,无符号返回0-255数,若是1111 1111则是返回255而不是-1,所以出现-1的情况只能是没有字节可以读取也就是作为文件读取结束的标志。
好像是这么一回事:
单个字节读取,字节以无符号整数返回0~255,不会有负数返回,
所以读取单个字节可以用返回值-1表示文件读取结束。
你只需要知道它返回 -1 就是读完了就行了,望采纳。
-1来判定文件读取结束,是一种约定的方法!表示文件读取完成!