import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyBytes {
public static void main(String[] args) throws IOException {
FileInputStream in = null;
FileOutputStream out = null;
try {
in = new FileInputStream("C:\\int.txt");
out = new FileOutputStream("C:\\out.txt");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
} finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}
}
}
这段代码中的数字(-1)来自哪里?
while ((c = in.read()) != -1) {
out.write(c);.
我试着查看java教程,但它只给我一个令人困惑的图表。
编辑:我将-1的值更改为-4,这导致最后一个字符被写多次。那是为什么?
答案 0 :(得分:2)
-1
值表示已到达文件末尾,无需再阅读。
Here是该方法的javadoc。
答案 1 :(得分:1)
“Returns: the next byte of data, or -1 if the end of the file is reached.
” - 来自http://docs.oracle.com/javase/6/docs/api/java/io/FileInputStream.html#read()
因此,-1
用于检查何时达到EOF
(即文件末尾)并打破循环。
答案 2 :(得分:0)
什么in.read()返回是无符号字节[0,255],如果返回-1表示此流已结束,则不应再读取它。 in.read()永远不会返回-4。