2011-01-12 58 views
11

關於使用屬性的Java tutorial討論如何使用Properties類。在教程中,它顯示了寫入名爲「defaultProperties」的文件的屬性。那麼什麼是屬性文件的好名字和位置?何處存儲.properties文件的Java?

我通常會編寫兩個Java應用程序之一:系統實用程序或用戶程序。我認爲大多數系統公用程序將在/etc/myfile.properties中有一個文件,大多數用戶程序會創建一個~/.myfile.properties。但是,這些路徑在Windows中不起作用。是否有更通用的方式來定義這些細節以使代碼平臺獨立?

+0

看看這個解決方案:http://stackoverflow.com/questions/966029 – Hiro2k 2011-01-12 16:02:12

+0

你的最後一個問題的簡短答案是「不」。 Windows並沒有很好的保存配置文件的地方,就像unix一樣,因爲它沒有面向文件。這正是爲什麼首選API被髮明出來的原因。我承認,這是一種恥辱,但是你去了。 – 2011-01-12 18:08:57

回答

0

這裏有幾個備選方案:

  • 從classpath
  • 讀取屬性文件傳遞的路徑屬性文件作爲啓動參數傳遞給應用程序

閱讀它從類路徑給你靈活性,因爲你可以將它包含在jar本身中,或者在應用程序啓動時指定它。

6

如果你談論的是保持外部屬性文件來配置你的應用程序,然後 我建議

System.getProperty("user.home")+File.separator+ "yourappname"+File.separator+"name.properties" 
如果你談論的是屬性文件的

內部放置到您的項目保持在default package

OR

其他選項是使用XML文件,或Preference

+0

這似乎是可行的。是否存在與`/ etc`平臺無關的等價物?我甚至不確定在Windows中映射到的是什麼,因爲註冊表通常用於該信息。 – User1 2011-01-12 16:04:43

0

如果捆綁的道具文件作爲應用程序的一部分,是隻讀的,然後把它放在jar文件。如果您還必須更新它,請通過file:/// url將其提供,並將該文件路徑作爲JVM(-DfileUrl = ...)參數傳遞。

看這個職位上如何閱讀的道具從一個JAR文件中的類路徑:Reading properties file from JAR directory

7

在這種情況下我會使用,而不是PropertiesPreferences API。

Preferences允許您存儲/檢索用戶和系統設置並自動爲您處理持久性。持久性是特定於平臺的;對於Windows,它使用註冊表,對於Unix,它使用隱藏文件。

0

使用jndi是一個很好的解決方案。通過webserver的管理控制檯運行時配置。當你獲得一個屬性時,Webapp會立即獲取變化,你不必重新啓動應用程序。