我有以下路徑結構主類:如何從Class文件夾外部讀取java中的屬性文件?
D:/java/myapp/src/manClass.java
,我希望把性質
D:/java/myapp/config.properties
其中將包含一個文件名和一些其他的配置文件。我會設置文件名屬性文件中是這樣的:file=file_to_read.txt
這file_to_read.txt
將位於D:/java/myapp/folder_of_file/
主類將讀取的文件名從屬性文件,然後再獲得內容形成文件。
我可以做到這一點,如果config.properties
和file_to_read.txt
在src/
與mainClass.java
。但是我不能以我想要的方式取得成功。
有人可以幫我嗎?我需要你的建議,如果我想將myapp
文件夾放在我的驅動器中的任何位置,並具有與上述相同的內部結構,並且程序能夠正確完成這項工作,我該怎麼辦。
我還需要你的建議,如果我想從構建項目後創建的jar中完成這項工作,那麼我可以沒有任何問題嗎?
我試着爲以下剛讀屬性文件:
URL location = myClass.class.getProtectionDomain().getCodeSource().getLocation();
String filePath = location.getPath().substring(1,location.getPath().length());
InputStream in = myClass.class.getResourceAsStream(filePath + "config.properties");
prop.load(in);
in.close();
System.out.println(prop.getProperty("file"));
但是這給當試圖從的getProperty屬性文件犯錯。 謝謝!
是,使用BalusC的首選解決方案。 – Klinetel
謝謝,它爲我工作。但是,我需要添加評論。如果你的文件夾添加到類路徑,那麼你並不需要指定獲取資源作爲流時的文件夾,這意味着你只需要調用的getResourceAsStream(「/ config.properties」),即使該文件位於一個名爲文件夾中資源 –
@Jesus:是的,它默認使用文件夾內容的方式與已經在(默認)類路徑中的所有其他文件夾相同。 – BalusC