【问题标题】:Is there an issue with FileReader or BufferedReader in Java 8?Java 8 中的 FileReader 或 BufferedReader 是否存在问题?
【发布时间】:2018-02-01 14:16:41
【问题描述】:
package fbread;

import java.io.BufferedReader;  
import java.io.File;  
import java.io.FileNotFoundException;  
import java.io.FileReader;  
import java.io.IOException;

public class Read {

public static void main(String[] args) {
    File file = new File("text.txt");

    try {
        FileReader fr = new FileReader(file);
        BufferedReader br = new BufferedReader(fr);
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }

        br.close();

    } catch (FileNotFoundException e) {
        System.out.println("File not found: " + file);
    } catch (IOException e) {
        System.out.println("Unable to read file: " + file);
    }

}

}

所以我在 Eclipse 中得到了这段代码,在我看来是 100% 正确的,但是,当我运行它时,Eclipse 中会弹出一个错误(灰色方块、红色叉号、无消息),并且在控制台。

有人知道为什么会这样吗?

我还附上了带有以下错误的图片:

error

【问题讨论】:

  • 我认为您的 Eclipse 已经“累”了。尝试重新启动它并检查您在“问题”选项卡中没有配置项目问题。
  • 该对话框似乎与您的程序没有任何关系。看起来像是一个错误的 IDE,或者只是您计算机上的其他随机东西。
  • 这不是问题,但是:绝对不是 100% 正确的。如果构造 BufferedReader 时出错,您永远不会关闭 FileReader。几乎可以肯定构造BufferedReader 不会出错,但模式仍然是错误的。相反,请使用try-with-resources。
  • 查看工作区.metadata目录下的.log文件,看看是否有更详细的消息。
  • 在重新安装 Eclipse 后它工作正常,不知道究竟是什么问题。谢谢大家

标签: java eclipse bufferedreader filereader


【解决方案1】:

我只是运行您的代码,没有任何错误。我正在使用日食月神。我所做的唯一更改是我将类包装在一个具有不同名称的包中,另外我使用绝对路径来定义要打开的文件。很有可能您的 IDE 在运行时出现问题,但使用绝对目录设置文件始终是一个好主意。

希望这会有所帮助!我附上代码...

package soproblem; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class Read { public static void main(String[] args) { File file = new File("C:\\Users\\user\\Desktop\\file.txt"); try { FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); String line; while ((line = br.readLine()) != null) { System.out.println(line); } br.close(); } catch (FileNotFoundException e) { System.out.println("File not found: " + file); } catch (IOException e) { System.out.println("Unable to read file: " + file); } } }

【讨论】:

    【解决方案2】:

    简短回答:不,Java 8 中的 FileReader 或 BufferedReader 没有问题。

    问题...显然...是您的 IDE 处于一种奇怪的状态,通过重新启动即可解决。


    对于其他认为他们可能在某些常见的 Java SE 类中遇到问题的人来说,问题出在 Java 中的可能性大于 99.99%。真正的问题很可能是以下之一:

    • 由于粗心、缺乏经验、误解您正在使用的某些类/方法、做出不正确的假设等导致代码中的错误。

    • 第 3 方语言中的错误。

    • IDE 行为不端(如果您在 IDE 中运行代码)。 (尝试从命令行运行您的应用。)

    • Java 或 IDE 安装损坏。

    是的,在 JVM 和 Java SE 库中发现了新的错误……非常偶然。但这非常罕见,因此应该首先考虑所有其他可能性。 '因为 “它是一个 Java 错误!” 误诊将停止寻找问题的真正原因。

    请记住,有数百万其他程序员在使用 Java SE 时没有遇到这些“错误”。 6 年前发布的 Java 8。这已经足够长,除了最隐蔽的错误之外,所有的错误都已经被发现并修复了。

    【讨论】:

      【解决方案3】:

      您可以使用以下方法简化您的代码:

      package BufferedReader;
      import java.io.*;
      
      public class Buffered {
      
      public static void main(String[] args)throws IOException {
      
          BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\user\\Desktop\\filename.txt"));
          String line;
          while ((line = br.readLine()) != null) {
              System.out.println(line);
          }
      
          br.close();
      
       }
      }
      

      【讨论】:

      • 是的……太好了。现在,代码不再输出错误消息,而是在用户面前抛出一个堆栈跟踪。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 2016-07-15
      • 2016-09-10
      • 1970-01-01
      相关资源
      最近更新 更多