2013-11-09 107 views
8

我在這裏看到的源碼爲&,但沒有得到以下代碼的工作。基本上,我希望從文件夾'src'中讀取一個名爲'Administrator'的文本文件。我需要一個相對路徑,因爲這個項目可能會轉移到另一個人。請耐心等待我。如何讀取文本文件的相對路徑

public void staffExists() throws IOException 
    {    
     //http://stackoverflow.com/questions/2788080/reading-a-text-file-in-java 
     BufferedReader reader = new BufferedReader(new FileReader(getClass().getResourceAsStream ("/DBTextFiles/Administrator.txt"))); 

     try 
     {    
      String line = null; 
      while ((line = reader.readLine()) != null) 
      { 
       if (!(line.startsWith("*"))) 
       { 
        System.out.println(line); 
       } 
      } 

     } 
     catch (IOException ex) 
     { 
      ex.printStackTrace(); 
     }    

     finally 
     { 
      reader.close(); 
     }   
    } 
+2

可能重複的[如何從項目中的相對路徑讀取文本文件?](http://stackoverflow.com/questions/3844307/how-to-read-text-file-from-relative- path-in-a-project) –

+1

問題是什麼? –

+0

@ Dooby Inc:已經查看了建議的網址。但我仍然無法工作,請引導我。 – user2945412

回答

16

這是一個有效的絕對路徑(在系統上我所知道的):

/path/to/directory/../../otherfolder/etc/ 

那麼什麼other answer說的話,是爲了獲取路徑到當前目錄:

filePath.concat("path to the property file"); 
String filePath = new File("").getAbsolutePath(); 

然後用串聯您的相對路徑

1

這是不正確的:

new FileReader(getClass().getResourceAsStream ("/DBTextFiles/Administrator.txt")) 

你想:

new InputStreamReader(getClass().getResourceAsStream ("/DBTextFiles/Administrator.txt")) 
+0

這將是很好解釋它爲什麼不正確。謝謝。 –

+0

它不typecheck –

0

在幾乎所有情況下,你應該使用便攜式斜線"/"."在任何情況下,你應該使用一個接受文件的構造文件(父)&字符串(文件名)或使用System.getProperty("file.separator").

10

現在我明白了,有些答案在這裏&有幫助getti讓我達到目標。對我的代碼&做了一個簡短的編輯。希望它也能幫助那裏的一些可憐的靈魂。

String filePath = new File("").getAbsolutePath(); 
System.out.println (filePath); 

//http://stackoverflow.com/questions/2788080/reading-a-text-file-in-java  
//http://stackoverflow.com/questions/19874066/how-to-read-text-file-relative-path 
BufferedReader reader = new BufferedReader(new FileReader(filePath + "/src/DBTextFiles/Administrator.txt")); 

try 
{       
    String line = null;   
    while ((line = reader.readLine()) != null) 
    { 
     if (!(line.startsWith("*"))) 
     { 
      System.out.println(line); 
     } 
    }    
} 
catch (IOException ex) 
{ 
    ex.printStackTrace(); 
}    

finally 
{ 
    reader.close(); 
}