2014-01-18 151 views
-1

我想從文件中讀取並將每行輸入到ArrayList中。我將文件放在與主java文件相同的文件夾中。文件名中沒有拼寫錯誤。有人能幫我弄清楚什麼是錯的?從Java中讀取文件錯誤?

Scanner in = new Scanner(new FileReader("lab02in.txt")); 
    while(in.hasNextLine()) 
    { 
     String line = in.nextLine(); 
     countries.add(line); 
    } 
    in.close(); 

    System.out.println("Printing New list after adding from file"); 
    displayCountries(countries); 

我得到這個錯誤:

Exception in thread "main" java.io.FileNotFoundException: lab02in.txt (No such file or directory) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(FileInputStream.java:146) 
    at java.io.FileInputStream.<init>(FileInputStream.java:101) 
    at java.io.FileReader.<init>(FileReader.java:58) 
    at lab2.Lab2.main(Lab2.java:50) 
Java Result: 1 
+0

嘗試使用完整路徑並記住將「\」替換爲「\\」 –

+0

錯在於應用程序無法找到您的文件或無法讀取它。你是否檢查過這兩種情況都不禁止你的應用程序執行成功? –

回答

1

如果你在正常運行Java程序,那麼你的當前目錄是上述lab2的目錄。然後,您聲明該文件與Java源代碼位於同一目錄中。代碼正在查看當前目錄,而不是源代碼目錄,因此它沒有找到您的文件。

請嘗試以下之一:

  1. 將文本文件到當前目錄(以上lab2)。這是首選,因爲源代碼和資源不應混用。或
  2. 在創建FileReader時,將lab2/添加到您的相對路徑名。

代碼:

Scanner in = new Scanner(new FileReader("lab02/lab02in.txt")); 
+0

我剛剛將.txt文件移動到主目錄中,如選項1。謝謝 – Mike

0

爲VM當前的工作目錄是從您的文件所在的目錄不同。如果文件lab02in.txt是靜態的並且與類相關(即在相同的目錄中),則可以(也應該)用getResourceAsStream加載它。否則,你需要指定路徑。

0

檢查System.out.println(System.getProperty(「user.dir」)); 這應該給你一些想法在哪裏尋找文件。