2014-09-12 103 views
1

我是一名初學Java的學生,致力於我們的第一課作業。 在這個任務中,我需要讀取一個txt文件,並用它的內容填充一個數組,每行第一個空格在數組中。程序不讀取txt文件

我的教授給了我們代碼來做到這一點,但我一直收到一個錯誤,那就是我每次嘗試都不能讀取文件。 我在Mac上使用Netbeans 8,並且文件States.Fall2014.txt位於src文件夾中,其中包含我所有的java類。

Exception in thread "main" java.io.FileNotFoundException: States.Fall2014.txt (No such file or directory) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(FileInputStream.java:138) 
    at java.io.FileInputStream.<init>(FileInputStream.java:93) 
    at java.io.FileReader.<init>(FileReader.java:58) 
    at main.main(main.java:21) 
Java Result: 1 

這是我的代碼。我只包含了與打開文件有關的代碼,因爲我相信你不希望被其他類垃圾郵件。 修剪過程中的註釋代碼是回顯打印,以確保文件正確讀取(當前不需要,因爲文件未被讀入)。

import java.io.*; 

public class main { 

    /** 
    * @param args the command line arguments 
    * @throws java.io.IOException 
    */ 
    public static void main(String args[]) throws IOException { 
     StateCollection Sdriver = new StateCollection(50); 
     //Sdriver = new StateCollection(50); 
     //Creates object of collection class 
     FileReader fr= new FileReader("States.Fall2014.txt"); 
     BufferedReader br1 = new BufferedReader (fr); 
      String inputString; 
     String stateName; 
      String stateCapital; 
      String stateAbbrev; 
      int statePop; 
      String stateRegion; 
      int stateRegionNum; 

      inputString = br1.readLine(); 
      while (inputString != null) 
     { 
      stateName = inputString.substring(1, 15).trim(); 
      //System.out.println("stateName read in was: " + stateName); 
      stateCapital = inputString.substring(16, 30).trim(); 
      //System.out.println(「stateCapital read in was: 「 + stateCapital); 
      stateAbbrev = inputString.substring(31, 32).trim(); 
      //System.out.println(「stateAbbrev read in was: 「 + stateAbbrev); 
      statePop = Integer.parseInt(inputString.substring(33, 40)); 
      //System.out.println(「statePop read in was: 「 + statePop); 
      stateRegion = inputString.substring(41, 55).trim(); 
      //System.out.println(「stateRegion read in was: 「 + stateRegion); 
      stateRegionNum = Integer.parseInt(inputString.substring(56)); 
      //System.out.println(「stateRegionNum read in was: 「 + stateRegionNum); 
      //Code to create object 
      inputString = br1.readLine(); // read next input line. 
     } 
     br1.close();  //Close input file being read 
+0

爲什麼不硬編碼完整路徑?您可以右鍵單擊該文本文件並從屬性複製路徑。 – RyPope 2014-09-12 20:58:08

+0

我需要壓縮文件並將其發送給我的教授,如果我編寫了硬編碼路徑,那麼這不會破壞路徑嗎? – 2014-09-12 21:00:28

回答

0

變化

FileReader fr= new FileReader("States.Fall2014.txt");

FileReader fr= new FileReader("src/States.Fall2014.txt");

上一級項目目錄移動文件。

+0

添加/ src工作。謝謝! (當它允許我會標記爲已回覆) – 2014-09-12 21:03:39

+0

非常好!祝你的Java課程好運! – 2014-09-12 21:04:52

0

確保TXT文件位於正確的文件夾/區域中。

你不應該把它和你的課一樣,因爲其他答案指出,你需要它在根文件夾中。

+1

他說與文件夾位於同一文件夾中 – RyPope 2014-09-12 20:56:48

+0

請確保您定義了文件的位置。這在使用不同的IDE時會有所不同。 – 2014-09-12 20:57:31

+0

對不起,錯過了我的眼睛。 – 2014-09-12 21:00:00

0

將文件向上移動一層,與src文件夾相同。

0

src目錄不是(必然).class文件所在的目錄。請確保States.Fall2014.txt位於類路徑中。