文件 Reader 无法正常工作?

File Reader not working properly?

我有以下代码,由于某种原因从未到达文件末尾,所以 while 循环永远不会结束。

public class Temp {
FileReader fr;

Temp() {
    try {
        fr = new FileReader("File path");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}

public static void main(String[] args) {
    Temp ob = new Temp();

    try {
        char c;
        while ((c = (char) ob.fr.read()) != -1) {
            System.out.println(c);
        }
        ob.fr.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

谁能帮我解决这个问题!?提前致谢:)

您正在比较 c - char,它是 unsigned 类型 - 与 -1。不要那样做。它会将 c 提升为 int,因此您最终会得到 65535。相反,将 c 设为 int 并在循环体内转换为 char

int c;
while ((c = ob.fr.read()) != -1) {
    System.out.println((char) c);
}

我还建议不要仅仅为了在变量中存储一些东西而创建一个新对象...您可以在此处为 FileReader 使用局部变量。

我还建议:

  • 不是抛出异常就继续,就好像什么都没发生一样
  • 使用 try-with-resources 而不是手动关闭 reader
  • 避免从 FileReader 开始,因为它始终使用默认编码。 (使用 FileInputStreamInputStreamReader,或者从 Java 7 开始使用 Files.newBufferedReader。)