字节流中字符的数字索引

时间:2013-05-27 01:08:01

标签: java

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

3 个答案:

答案 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。