【问题标题】:Scanner No Line Found Exception扫描仪找不到行异常
【发布时间】:2011-12-03 01:47:09
【问题描述】:

我收到以下异常。

java.util.NoSuchElementException:找不到行

我在编写需要从文本文件读取的较大程序时遇到此错误,因此决定进行测试。

Scanner scan = new Scanner(new File("restrictions.txt");
String s1 = scan.nextLine();
System.out.println(s1);

我仍然得到异常。我在与名为restrictions.txt 的类相同的文件夹中有一个文本文件,其中包含文本。我做错了什么?

【问题讨论】:

  • 我也用 scan.next() 而不是 scan.nextLine() 尝试了同样的事情,得到了这个异常:java.util.NoSuchElementException
  • 您确定该文件存在吗?试试 System.out.println(file.getAbsolutePath() + " " + file.exists() ) 并确保它在那里。
  • 我很确定该文件存在,扫描仪无异常初始化,我尝试通过 NetBeans 和文件浏览器进行设置,但我还是会检查一下。

标签: java io java.util.scanner


【解决方案1】:

new File("restrictions.txt") 将在您的应用程序的“开始目录”中查找该文件 - 如果您使用的是 Eclipse,它可能是您项目的根目录。

要打开你的类旁边的文件,你可以使用 Scanner 构造函数,它接受你得到的 InputStream

YourClass.class.getResourceAsStream("restrictions.txt")

【讨论】:

    【解决方案2】:

    您应该在调用in.nextLine() 之前使用if(in.hasNextLine())。否则最后一行会抛出 Line not found 异常。

    【讨论】:

      【解决方案3】:

      Javadoc for Scanner

      是否需要指定行尾以便它知道行是什么?

      【讨论】:

      • 我使用扫描仪已经有一段时间了,从来没有这样做过,但这是可能的。但是,我用 scan.next() 而不是 scan.nextLine() 尝试了同样的事情并得到了这个异常:java.util.NoSuchElementException
      • 输入文件是否会有不同的行尾,因为它是在不同的操作系统或编辑器上修改的?你能从输入文件中分享一个 sn-p,最好显示行尾吗?
      猜你喜欢
      • 1970-01-01
      • 2015-05-07
      • 2017-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多