1

我製作了一個GUI和一個按鈕。
我的代碼如下所示:從.txt文件讀取返回「找不到行」

private void jButtonSubmitActionPerformed(java.awt.event.ActionEvent evt) { 
try { 
    Scanner scan = new Scanner(new File("persontest.txt")); 
    while(scan.hasNext()) { 
    System.out.println(scan.nextLine()); 
    } 
} catch (FileNotFoundException ex) { 
    System.out.println("File not found" + ex.getMessage()); 
} catch (Exception e) { 
    System.out.println("Some error" + e.getMessage()); 
} 

persontest.txt包含以下文本:

  1. 什麼我在團隊合作中工作時與貢獻:
    一個。我想出了新的想法
    b。我後續的事情,因爲我基本上是 徹底
    c。我評估什麼是現實可行的
    d。我主張的替代方法,客觀和公正的

當試圖運行我得到「一些錯誤沒有行找到」​​
我試圖從文本中刪除所有特殊字符,我能讀它,所以我嘗試添加「 UTF-8「以這種方式發送到我的掃描儀。

Scanner scan = new Scanner(new File("persontest.txt"), "UTF-8"); 

然而,這似乎並沒有做任何事情。我仍然得到「找不到線路」。
如果這個問題之前有人問我,我做了一個徹底的搜索,但我無法理解問題的問題或答案提供的背景下我的問題。
我將我的掃描儀更改爲bufferedreader,每個疑難解答和Harshas示例,現在即使使用特殊字符也會讀取文本,但不會正確顯示它們。我只是得到方形盒子。這是一個小問題。

+2

可能的重複http://stackoverflow.com/questions/7688710/scanner-no-line-found-exception - 試試看答案 –

+0

你是什麼目錄結構?你如何運行應用程序(從eclipse,命令行)? – KrzyH

+0

我不確定這是如何回答我的問題。我可以在沒有「。」,「'」和「 - 」的情況下正常閱讀文本,也可以使用此代碼嘗試的其他任何.txt文件。但是這個.txt給了我這個錯誤。 - 我通過Netbeans運行文件。「最有可能」不是我的directoty結構,因爲我可以在文檔中使用任何其他文本,並且它可以工作。 – user2878902

回答

1

首先,確保persontest.txt位於您的主項目文件夾中,而不是其中的子文件夾,因爲它不會找到它。

我推薦使用BufferedReader逐行讀取它。這是如何:

BufferedReader input = new BufferedReader(new FileReader("persontest.txt")); 
String line; 
while ((line = input.readLine()) != null && !line.isEmpty()) { 
    System.out.println(line); 
} 

這是一個很好的做法,檢查行不是空的,並檢查它不等於null。例如,如果一條線等於\ t它將被歸類爲空,但不爲空。

-1

你可以簡單地做到這一點使用

try { 

     String line; 

     BufferedReader br = new BufferedReader(new FileReader("persontest.txt")); 

     while ((line = br.readLine()) != null) { 
      System.out.println(line); 
     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

如果您需要掃描儀這樣做,如果persontest.txt是在類路徑(即內罐子或源,你可以嘗試使用

Scanner reader = new Scanner(new FileInputStream("persontest.txt"); 
1

文件夾)您可以使用:

YourClass.class.getClassloader().getResourceAsStream("persontest.txt")