2011-08-17 76 views
2

所以問題是我每次嘗試在NetBeans或Eclips上加載下面的代碼時都會拋出異常,但是當我嘗試通過TextMate運行它時,一切正常!Netbeans FileReader FileNotFound當文件在文件夾中時出現異常?

我試圖把絕對地址,改變了文本文件等..沒有幫助!

有人可以幫我解釋一下爲什麼它不能和IDE一起運行嗎?

感謝

void loadFile() { 
    try { 
     list = new LinkedList<Patient>(); 

     FileReader read = new FileReader("a.txt"); 
     Scanner scan = new Scanner(read); 

     while (scan.hasNextLine()) { 
      String Line = scan.nextLine(); 
      String[] subArray = new String[5]; 
      subArray = Line.split(","); 
      int a = Integer.parseInt(subArray[4]); 

      list.add(new Patient(Integer.parseInt(subArray[0]), subArray[1], subArray[2], subArray[3], a)); 
     } 
    } catch (FileNotFoundException e) { 
     JOptionPane.showMessageDialog(null, "The file does not exist!" + "\nProgram is terminating.", "File Not Found", JOptionPane.INFORMATION_MESSAGE); 
     System.exit(0); 
    } 
    cap = list.size(); 
    search_names = new int[cap]; 
    for (int i = 0; i < list.size(); i++) { 
     search_names[i] = i; 
    } 
    setNames(search_names); 
}//end loadFile 

調試日誌: Have no file for /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsfd.jar Have no file for /System/Library/Frameworks/JavaVM.framework/Frameworks/JavaRuntimeSupport.framework/Resources/Java/JavaRuntimeSupport.jar Have no file for /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/laf.jar Have no file for /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/sunrsasign.jar }

+0

我試過相同的代碼,它不工作。我認爲你需要提及完整的文件路徑。 – Logan 2011-08-17 11:28:02

回答

2

在NetBeans的默認工作目錄始終是根文件夾,我的意思是包含名爲「src」,「build」等文件夾的文件夾等放置文件與這些文件夾一起,它會做的伎倆。

+0

a.txt文件位於具有.class文件的「root」文件夾中那叫它! 示例:`用戶/ ME/NetBeansProjects/Project1/src`所有文件都在這個文件夾中! – 2011-08-17 11:34:01

+0

嘗試此路徑..用戶/ ME/NetBeansProjects/Project1/a.txt – 2011-08-17 11:41:41

0

也許你有不同的「工作目錄」 在你不同的設置。您可以檢查你是在哪個目錄通過打印這樣的:

System.out.println(new File(".").getAbsoluteFile()); 

在Eclipse中您可以設置設置工作目錄中運行配置,參數標籤。

+0

如何查看我的工作目錄?在NetBeans中? – 2011-08-17 11:23:37

+0

已更新(用於eclipse)(以編程方式,您可以執行`System.out.println(new File(「。」)。getAbsoluteFile());`) – dacwe 2011-08-17 11:24:01

0

試試BufferedReader?

編輯:編輯以更接近您的代碼顯示示例。使用文件讀取器時我遇到了問題。但是能夠使用BufferedReader的.println。我沒有使用Scanner

編輯2:我也能夠讓你的代碼工作。隨着掃描儀等(使用完整路徑)(例:FileReader read = new FileReader(""C:\\myfolder\\folder\\a.txt"所以嗯

try { 
    list = new LinkedList<Patient>(); 
    BufferedReader scan = new BufferedReader(new FileReader("C:\\a.txt")); 
    String lines; 
      try { 
       // Scanner scan = new Scanner(read); 
       while ((lines = scan.readLine()) != null) { 
       //I just printed lines you will do your stuff here 
        System.out.println(lines); 
        } 
      } catch (IOException ex) { 
       Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); 
      } 
     } 
     catch (FileNotFoundException e) { 
     JOptionPane.showMessageDialog(null, "The file does not exist!" + "\nProgram is terminating.", "File Not Found", JOptionPane.INFORMATION_MESSAGE); 
     System.exit(0);  
     } 
1

終於找到了解決辦法

在Eclipse中,你應該把項目文件夾中的目標文件猜猜同樣適用於NetBeans。

我曾在「SRC」文件夾我的目標文件(其中實際的代碼文件是)。事實上,我不得不只是將其更改爲上文件夾中的項目文件夾。

容易和簡單。

2

這裏是在NetBeans IDE中一步一步的過程7.0.1

  1. 單擊文件菜單上。
  2. 單擊「項目屬性」。
  3. 在類別中,選擇運行。
  4. 在主類中選擇當前的java文件。
  5. 在參數中選擇您想要讀取的文件,例如abc.txt或abc.java
  6. 並在工作目錄中記下abc.txt或abc.java所在文件夾的路徑。
  7. 單擊確定關閉項目屬性。
  8. 運行程序時,不要忘記選擇您的項目作爲主項目。
  9. 然後點擊鍵盤上的F ^。即你必須運行你的主項目,而不是運行你當前的java文件。 就是這樣....享受!
0

右擊你的文本文件,選擇屬性,並拷貝的路徑,並將其粘貼在地方,你已經進入你的文件名

0

可以說你想在NetBeans

如果添加的test.txt C:\ myProject中的項目將C:\ myProject文件中的文本文件直接放入C:\ myProject \ src中的而不是。然後使用:

File file = new File(「test.txt」);

Scanner in = new Scanner(file);

OR

掃描儀輸入=新掃描儀(新文件( 「test.txt的」));

相關問題