在NetBeans中获取“NoSuchElementException:No line found”,但在DrJava /命令行中没有?

时间:2013-02-07 19:38:31

标签: java netbeans

我是Java& NetBeans和避难所发现的问题与我当前遇到的问题完全相同。

我有这个基本代码,用于打印现有文本文件的第一行:

14    File test = new File("C:\\Users\\Computer\\Desktop\\testfile.txt");
15    Scanner read = new Scanner(test);
16    
17    String firstline = read.nextLine();
18    System.out.println(firstline);
19  
20    read.close();

出于某种原因,相同的代码在Dr Java和Windows命令行中运行良好,但在NetBeans中,我不断得到这个:

Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1585)
at testfile.Testfile.main(Testfile.java:18)

为什么呢?我发现似乎解决了这个问题的一件事就是取代" File"使用" FileReader",但我不确定为什么会有效。

1 个答案:

答案 0 :(得分:1)

首先,您应该检查您的扫描仪是否有一些数据。这是一个例子:

File test = new File("D:\\testfile.txt");
Scanner read = new Scanner(test);

String line;
while (read.hasNextLine()) {
    line = read.nextLine();
    // your logic
    System.out.println(line);
}
read.close();

其次,当您不检查“read.hasNextLine()”(或read.hasNext或其他任何read.hasXxx方法)时,您应该从代码中获得2种行为:
当您的文件为空时,1- java.util.NoSuchElementException 2-您将获得第一行打印 - >我使用Java7u13测试了NetBeans 7.3 RC1,它可以正常工作。

在这里,您可以找到有关I / O和扫描仪的更多信息:http://docs.oracle.com/javase/tutorial/essential/io/scanning.html

这是使用try-with-resources的新Java 7方式,它可以自动为您创建和关闭Scanner。 (您可以使用所有实现接口Closeable的对象来实现此目的)

File test = new File("D:\\testfile.txt");
try (Scanner read = new Scanner(test)) {
    String line;
    while (read.hasNextLine()) {
    line = read.nextLine();
    // your logic
    System.out.println(line);
    }
}