2014-10-30 71 views
2

所以我的問題不是如何從相對路徑加載屬性文件,而是如何聲明相對路徑(相對於屬性文件)作爲文件中的屬性路徑?將相對路徑作爲屬性文件中的屬性

例如,我想有一個目錄等

|-etc 
|---File1 
|---File2 
|---properties. 

現在裏面的屬性我想是這樣,

file1 = ./File1 
file2 = ./File2 

但Java將簡單地得到」 ./File1實際內容「

我該如何連線它才能讓Java獲得屬性並理解​​它應該與屬性文件的相對位置有關?

所以當你做new File(properties.getproperty(file1))就會將嘗試尋找在文件C://等/文件1,而不是僅僅./File1

+0

如何加載屬性文件? – sp00m 2014-10-30 15:48:32

+0

使用工廠或包裝模式怎麼樣?你會用一些API使用你的File實例嗎? – 2014-10-30 15:57:54

+0

有些人擴展File.class。 http://stackoverflow.com/questions/11513327/java-myfile-extends-file – 2014-10-30 15:58:54

回答

1

您需要了解Java屬性文件只是鍵列表/值對。你如何解釋這些價值取決於你。所以,你應該預料到properties.getProperty("file1")會給你字符串"./File1" ...但你可以使用,作爲一個相對文件名很容易:

File rootDirectory = ...; // However you get this 
String relativePath = properties.getProperty("file1"); 
File file = new File(rootDirectory, relativePath); 
0

爲了補充Jon的回答,你必須以某種方式將根文件夾作爲參考點。您的行

new File(properties.getproperty(file1)) 

將查找相對路徑,該路徑與包含該行的已編譯Java類的.class文件的位置相比較。即使你正確地設置了相對路徑,如果你要移動一個類的包,代碼也會中斷。