2
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,这导致最后一个字符被多次写入。这是为什么?

4

3 回答 3

2

-1值标志着已到达文件末尾并且没有更多内容要读取。

是该方法的javadoc。

于 2013-05-27T01:11:01.153 回答
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(即文件末尾)并中断循环。

于 2013-05-27T01:09:37.573 回答
0

in.read() 返回的是一个无符号字节 [0,255],如果返回 -1 表示这个流已经结束,你不应该再读它了。in.read() 永远不会返回 -4。

于 2013-05-27T01:20:44.607 回答