2009-10-06 147 views
1

你好,我已經在Eclipse中寫了這樣的功能:日食和路徑

public static ArrayList<String> getMails(){ 
    ArrayList<String> mails = new ArrayList<String>(); 
     try{ 
      FileInputStream fstream = new FileInputStream("mails.txt"); 
      DataInputStream in = new DataInputStream(fstream); 
       BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
      String strLine; 
      while ((strLine = br.readLine()) != null) { 
       mails.add(strLine.trim()); 
      } 

      in.close(); 
      }catch (Exception e){//Catch exception if any 
       System.err.println("Error: " + e.getMessage()); 
      } 

    return mails; 
} 

的mails.txt文件下工作區/項目名稱,我想保持工作區/項目名稱/ bin /目錄下的這個項目,作爲相對路徑,所以無論何時我將workspace/projectname/bin目錄複製到其他位置或計算機,都要讓它工作。然而,當我嘗試這個時,我得到「FileNotFound」異常。我怎樣才能解決這個問題 ? 感謝

+0

另請參閱http://stackoverflow.com/questions/1464291/how-to-really-read-text-file-from-classpath -in-java的 – VonC 2009-10-06 20:39:41

回答

5

如果保持文本文件在班級生活(您在上面摘錄的一個),那麼該文件將自動生成過程中複製到bin目錄目錄(不是bin目錄)。您將其作爲資源讀取,而不是作爲文件:

final InputStream in = MyClass.class.getResourceAsStream("mails.txt"); 
final Reader isr = new InputStreamReader(in, "ISO-8859-1"); //or whatever 
final BufferedReader br = new BufferedReader(isr); 
try { 
    // ... 
} finally { 
    br.close(); 
}