从.txt文件中读取返回“No line found”

时间:2013-10-14 13:26:56

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

我制作了一个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。我主张客观和公正的替代方法
  2.   

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

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

然而,这似乎没有做任何事情。我仍然得到“没有发现线” 如果在开始之前我已经问过这个问题,我就进行了彻底的搜索,但是我要么无法理解问题所提出的问题,要么根据我的问题提供答案。
我根据Troubleshoot和Harshas示例将扫描仪更改为bufferedreader,现在即使使用特殊字符也可以读取文本,但是它不能正确显示。我刚拿到方盒子。这是一个小问题。

3 个答案:

答案 0 :(得分:1)

首先,确保 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 ,则它将被归类为空,但不会为空。

答案 1 :(得分:1)

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

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

答案 2 :(得分:-1)

您可以使用

执行此操作
    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 reader = new Scanner(new FileInputStream("persontest.txt");