在用java实现文件复制的时候,(len=in.read(bytes))!=-1为什么必须判断!=-1,这个判断的具体意思是什么

FileInputStream in=new FileInputStream("f:/test.txt");
FileOutputStream out=new FileOutputStream("e:/test.txt");
byte[] bytes=new byte[512];
int len=-1;
while((len=in.read(bytes))!=-1){
out.write(bytes, 0, len);
}

public int read(byte[] b)
这个方法是从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中
它是有返回值的,它返回读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1
就是当它返回-1的时候 数据已经复制完了 while循环终止程序结束追问

呵呵,这个问题已经解决。但我还是不明白,当它读到的数据没用完时,返回的是读到的数组的长度吗

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-08-07
这个是读取一个文件中的数存入bytes中在将bytes中的每一个分别赋值给len。如果还有值,那么len就不等于-1,那么就会循环的继续读取,直到读取完值为止。
第2个回答  2013-10-17
read返回值是读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1.意思是已经到达末尾.