【问题标题】:Reading from .txt file returns "No line Found"从 .txt 文件读取返回“未找到行”
【发布时间】:2013-10-14 13:26:56
【问题描述】:

我已经制作了一个 GUI 和一个按钮。
我的代码如下所示:

private void jButtonSubmitActionPerformed(java.awt.event.ActionEvent evt) {
try {
  Scanner scan = new Scanner(new File("persontest.txt"));
  while(scan.hasNext()) {
    System.out.println(scan.nextLine());
  }
} catch (FileNotFoundException ex) {
  System.out.println("File not found" + ex.getMessage());
} catch (Exception e) {
  System.out.println("Some error" + e.getMessage());
}

persontest.txt 包含以下文本:

  1. 在团队合作中我有什么贡献:
    一个。我想出了新的想法
    湾。我跟进事情,因为我基本上 彻底
    C。我评估什么是现实可行的
    d。我提倡客观公正的替代方法

当我尝试运行时,我得到“一些错误没有找到行”
我尝试从文本中删除所有特殊字符并且我可以阅读它,因此我尝试以这种方式将“UTF-8”添加到我的扫描仪中。

Scanner scan = new Scanner(new File("persontest.txt"), "UTF-8");   

但是,这似乎没有任何作用。我仍然收到“找不到线路”。
如果在对不起之前有人问过这个问题,我做了彻底的搜索,但我要么无法理解所提出的问题,要么无法理解针对我的问题提供的答案。
根据 Troubleshoot 和 Harshas 示例,我将扫描仪更改为 bufferedreader,现在即使使用特殊字符,它也会读取文本,但无法正确显示它们。我只是得到方盒子。这是一个小问题。

【问题讨论】:

  • stackoverflow.com/questions/7688710/… 的可能重复 - 试试它的答案
  • 你的目录结构是什么?您如何运行应用程序(从 eclipse、命令行)?
  • 我不确定这如何回答我的问题。我可以在没有“.”、“'”和“-”以及我尝试使用此代码的任何其他 .txt 文件的情况下阅读文本。但是这个 .txt 给了我这个错误。 - 我通过 Netbeans 运行文件。 “很可能”不是我的直接结构被破坏了,因为我可以使用文档中的任何其他文本并且它可以工作。

标签: java exception special-characters netbeans-7 java.util.scanner


【解决方案1】:

如果 persontest.txt 在类路径中(即在 jar 或源文件夹中),您可以使用:

YourClass.class.getClassloader().getResourceAsStream("persontest.txt")

【讨论】:

    【解决方案2】:

    首先,确保 persontest.txt 在您的主项目文件夹中,而不是它的子文件夹,否则找不到它。

    我建议使用 BufferedReader 逐行读取。方法如下:

    BufferedReader input = new BufferedReader(new FileReader("persontest.txt"));
    String line;
    while ((line = input.readLine()) != null && !line.isEmpty()) {
        System.out.println(line);
    }
    

    检查该行是否为空以及检查它不等于 null 是一种很好的做法。例如,如果一行等于 \t,它将被归类为空,而不是 null。

    【讨论】:

      【解决方案3】:

      你可以简单地使用

          try {
      
              String line;
      
              BufferedReader br = new BufferedReader(new FileReader("persontest.txt"));
      
              while ((line = br.readLine()) != null) {
                  System.out.println(line);
              }
      
          } catch (IOException e) {
              e.printStackTrace();
          } 
      

      如果您需要使用 Scanner 进行操作,可以尝试使用

      Scanner reader = new Scanner(new FileInputStream("persontest.txt");
      

      【讨论】:

        猜你喜欢
        • 2015-06-14
        • 2019-04-22
        • 2020-12-06
        • 1970-01-01
        • 1970-01-01
        • 2020-07-30
        • 2017-02-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多