为什么要读到-1就结束,读到别的不行么,不是很懂
为什么要读到-1就结束,读到别的不行么,不是很懂
while ((c = bis.read()) != -1) {
bos.write(c);
bos.flush();// 刷新缓冲区
为什么要读到-1就结束,读到别的不行么,不是很懂
while ((c = bis.read()) != -1) {
bos.write(c);
bos.flush();// 刷新缓冲区
2015-07-15
read
public abstract int read()
throws IOException
从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞。
子类必须提供此方法的一个实现。
返回:
下一个数据字节;如果到达流的末尾,则返回 -1。
抛出:
IOException - 如果发生 I/O 错误。
从API的理解来看,read是每次读取一个byte,byte只有8位,范围就是0-255,只不过read将他作为一个32位的int值返回出来,正常情况时不可能返回负数的,所以返回一个负数肯定是特殊情况了。这是我的理解,希望对你有帮助。
举报