2011-10-07 96 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異常。