2012-03-06 54 views
0

我正在開發使用Netbeans 7.0.1 IDE的Java應用程序(而不是Web應用程序,無服務器等)。 現在我有一個閱讀任何屬性/或從我的Java類的任何其他文件的問題。java應用程序沒有在IDE中設置工作文件夾的情況下讀取屬性文件

以下是我在我傳似connector.properties(我在同一個包中的文件,因爲這班)的文件名參數做

FileReader f = new FileReader(new File(args[0])); 
BufferedReader r = new BufferedReader(f); 

。該項目運行時出現以下錯誤

Can't load: connector.properties : Exception is: connector.properties (The system cannot find the path specified) 

爲什麼我無法讀取屬性文件?什麼是我的類路徑的根?

當我設置'Working Folder'(右鍵單擊該項目並選擇「運行」部分)到像C/complete/path/to/the/package 這樣的包級別時,只讀屬性文件。
我想知道爲什麼我需要在Netbeans項目中設置工作文件夾,以及如何在不設置工作文件夾的情況下讀取文件?

+0

這些屬性是隻讀還是讀/寫? – 2012-03-06 08:43:56

+0

現在只讀。謝謝 – 2012-03-06 17:54:18

+0

如果它們是隻讀的,可以將它們添加到運行時類路徑上的其中一個jar中,並通過URL訪問它們。 – 2012-03-06 18:37:33

回答

1

這是因爲您沒有使用類路徑閱讀器來讀取您的屬性文件。你上面的代碼讀取一條硬路徑。

而且,要從類路徑讀取屬性文件,可以使用apache commons Configuration的文件屬性閱讀器。在那裏有幾個用於讀取屬性文件的選項,並且這些輸入文件來自例如流。類路徑。

+0

謝謝..我也有一個與log4j.properties相關的問題,我必須在運行應用程序時指定VM選項中的整個路徑,以便只有在設置了VM選項-Dlog4j.configuration時纔會讀取log4j.properties =文件:/ C:/logconfig/log4j.properties – 2012-03-06 06:41:54

0

你應該把你的屬性文件放在項目文件夾中,因爲它是默認的工作文件夾,而不是放在要運行的類的包中。

0
Properties properties = new Properties(); 
String propertiesFileName = "config.properties"; 

InputStream inputStream = getClass().getClassLoader().getResourceAsStream(propertiesFileName); 
properties.load(inputStream); 

這段代碼在讀你的屬性文件的時候會做的。

相關問題