在 NetBeans 中获取"NoSuchElementException: 未找到行",但在 DrJava/命令行中未找到?



我是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();

出于某种原因,同样的代码在DrJava和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)

为什么?我发现有一件事似乎可以解决这个问题,那就是用"FileReader"代替"File",但我不确定为什么这样做有效。

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

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.hasNextRine()"(或read.hasNext或其他任何read.hasXxx方法)时,您应该从代码中期待以下两种行为:
1-java.util.NoSuchElementException当您的文件为空
2-您将打印出第一行
->我用Java7u13测试了NetBeans 7.3 RC1,它可以正常工作。

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

以下是新的Java 7使用try with resources的方法,它会自动为您创建和关闭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);
    }
}

相关内容

  • 没有找到相关文章