2011-09-29 45 views
1

我想加載一個屬性文件。合適的文件位於應用程序的類路徑中。無法加載Java中的屬性文件

Properties p = new Properties(); 
p.load(new FileInputStream("classpath:mail.properties")); 
System.out.println(p.get("hi")); 

現在我說的類路徑,因爲所謂的x.properties另一個文件在XML文件中被稱爲像這樣

<property name="x"> 
    <util:properties location="classpath:x.properties" /> 
</property> 

我把我的mail.properties在同一文件夾中x.properties,但我的Java程序無法找到它?任何想法我失蹤?

回答

6

僅僅因爲一些程序處理該XML文件喜歡的語法classpath:x.properties並不意味着它是Java普遍接受的語法

如果您提供"classpath:x.properties"FileInputStream查找名爲classpath:x.properties文件。 (檢查特定構造函數的文檔。)

嘗試提供該文件的完整路徑。通過類加載器。如果文件恰好是你的類路徑中,你可以使用類似

p.load(getClass().getResourceAsStream("mail.properties")); 
+1

getClass()的類。例如,如果我從TestProgram運行主要方法,它應該是TestProgram.class.getClass()..? – user2434

+0

然後你可以使用'TestProgram.class.getResourceAsStream'。 – aioobe

+0

嗯..我得到InputStream爲空。 – user2434

1

如果mail.properties確實是在classpath中,你將有更好的運氣加載它:

Properties p = new Properties(); 
InputStream is = getClass().getClassLoader().getResourceAsStream("mail.properties"); 
p.load(is); 
+0

哈。看起來像是有一些競爭者首先在那裏獲得了這一點。在我點擊帖子之前彈出。 ;) – Thor84no

+0

@ Thor84no - 大聲笑,你的答案點擊* * *之前點擊發布。時間/空間連續性問題? :d – mcfinnigan

相關問題