2015-10-22 75 views
3

我的目標是讀取IntelliJ上的文本文件。 但是,當我運行我的代碼時,出現「FileNotFoundException」消息。我的文件存在。我三重檢查,以確保路徑是正確的。我搜索了Stack Overflow尋找答案,閱讀了我遇到的每個問題,但沒有人提供具體的解決方案。IntelliJ「FileNotFoundException」,文件存在

這是我的代碼:

import java.io.BufferedReader; 
    import java.io.File; 
    import java.io.FileReader; 
    import java.io.IOException; 


    public class LetterGrader { 

     public static void main(String[] args) { 

      String curDir = new File(".").getAbsolutePath(); 
      System.out.println("Current sys dir: " + curDir); 


      try { 
       File inputData = new File("input.txt"); 
       BufferedReader br = new BufferedReader(new FileReader(inputData)); 

      } catch (IOException e) { 
       System.out.println("File not found"); 
       e.printStackTrace(); 
      } 
     } 
    } 

這是出現了錯誤信息。

File not found 
    java.io.FileNotFoundException: input.txt (The system cannot find the file specified) 
     at java.io.FileInputStream.open0(Native Method) 
     at java.io.FileInputStream.open(FileInputStream.java:195) 
     at java.io.FileInputStream.<init>(FileInputStream.java:138) 
     at java.io.FileReader.<init>(FileReader.java:72) 
     at LetterGrader.main(LetterGrader.java:23) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:497) 
     at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140) 

    Process finished with exit code 0 

任何幫助將不勝感激!當我找到解決方案時,我也會回覆。

[更新]

我移動我的「input.txt的」魚貫而出或src文件夾並進入主項目的文件夾來解決這個問題。

我也用掃描儀代替BufferedReader。

我的最終代碼的工作:

 try { 
      Scanner diskScanner = new Scanner(new File("input.txt")); 
      while (diskScanner.hasNextLine()) { 
       System.out.println(diskScanner.nextLine()); 
      } 
      diskScanner.close(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
    } 
+0

最有可能'inputData'不指向您認爲它指向的文件。嘗試使用絕對路徑,或者嘗試打印inputData的絕對路徑並查看輸出結果。 – Paul

+0

打印'System.getProperty(「user.dir」);'並查看目錄是否是文件所在的目錄。如果沒有,請使用'getAbsolutePath()' – sam

+0

我得到了絕對路徑,並且文件在那裏,但仍然是錯誤消息。 ( – Sugarcoder

回答

3

你可以嘗試打印文件第一的絕對路徑

System.out.println(new File("input.txt").getAbsolutePath()); 

而且,由於您使用的是IntelliJ,您可以打開IDE終端權並嘗試從那裏打開這個文件。例如:

cat /Users/antonpp/Documents/Projects/testapp/input.txt 

所以,你將完全確保該文件存在,它是在正確的地方。

+0

我得到了絕對路徑,並彈出相同的錯誤消息。 – Sugarcoder

0

哦,我也有一些問題。所以請嘗試Edit Configurations。你可以在Run - > Edit Configurations找到它。然後編輯Working directory到你的文件所在的位置。順便說一下,您可以將其編輯到基本目錄並在您的代碼中添加路徑。

相關問題