2011-10-07 72 views
0

我收到以下例外情况。扫描仪无线路发现异常

java.util.NoSuchElementException:没有找到行

在写从文本文件阅读这需要更大的程序中,我得到这个错误,所以决定做一个测试。

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

而且我仍然得到例外。我在文件名为restrictions.txt的文件夹中有一个文本文件,其中包含文本。我究竟做错了什么?

+0

我也尝试了scan.next()而不是scan.nextLine()并得到这个异常:java.util.NoSuchElementException – gmaster

+0

你确定该文件存在吗?尝试System.out.println(file.getAbsolutePath()+“”+ file.exists())并确保它在那里。 – chubbsondubs

+0

我非常确定该文件存在,扫描程序初始化时没有出现异常,我尝试通过NetBeans和文件浏览器进行创建,但无论如何我都会检查。 – gmaster

回答

2

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

要打开旁边的文件到您的类,你可以使用它接受你的

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

+1为简单的解释! – Freiheit

0

Javadoc for Scanner

你需要指定结束,所以它知道一条线是什么线?

+0

我一直在使用扫描仪一段时间,从来没有这样做,但它是可能的。然而,我用scan.next()而不是scan.nextLine()试着用同样的方法得到了这个异常:java.util.NoSuchElementException – gmaster

+0

输入文件是否有不同的行结尾,因为它是在不同的操作系统或编辑器上修改的?你能分享一个输入文件的片段,最好显示行尾? – Freiheit

2

调用in.nextLine()之前,您应该使用if(in.hasNextLine())的InputStream扫描仪的构造。否则,对于最后一行,将抛出Line not found异常。