我正在使用Config。屬性文件從如何指定屬性文件的路徑
Properties Config= new Properties(); Config.load(new FileInputStream("C:\\Config. properties "));
參數傳遞給我的方法,現在我加載文件,因爲我不希望保持它的硬編碼如何與包級別設置。或在應用程序內。
在此先感謝。
我正在使用Config。屬性文件從如何指定屬性文件的路徑
Properties Config= new Properties(); Config.load(new FileInputStream("C:\\Config. properties "));
參數傳遞給我的方法,現在我加載文件,因爲我不希望保持它的硬編碼如何與包級別設置。或在應用程序內。
在此先感謝。
使用ResourceBundle類。你只需要指定屬性文件名。它將從任何路徑獲取文件,只要該路徑應位於類路徑中即可。
例子:
// abc.properties is the properties file,which is placed in the class path.You just need to
// specify its name and the properties file gets loaded.
ResourceBundle s=ResourceBundle.getBundle("abc");
s.getString("key"); //any key from properties file...
把配置文件在類路徑(在您的.class文件),並使用
getClass().getClassLoader().getResourceAsStream(_path_to_config_file);
有兩種方式來獲得在運行時的配置文件的路徑訪問它。
a)從數據庫中獲取它。 b)從服務器級配置的JVM的自定義屬性中獲取它 最佳進程是「b」,如果路徑更改並且只需重新啓動服務器,則可以隨時更改JVM的屬性。
我也只是要建議,但是你也可以通過命令行參數傳遞的完整路徑的配置文件,例如:
java YourApp -config C:\\config.properties
屬性文件打包與應用程序不應該使用文件系統加載,但使用類加載器。事實上,一旦應用程序被打包,屬性文件將被嵌入到一個jar文件中,並帶有.class文件。
如果config.properties
文件是在包com.foo.bar
,那麼就應該用
InputStream in = SomeClass.class.getResourceAsStream("/com/foo/bar/config.properties");
或用
InputStream in = SomeClass.class.getClassLoader().getResourceAsStream("com/foo/bar/config.properties");
您也可以使用相對路徑加載它加載它。如果SomeClass
也在包com.foo.bar
中,那麼您可以加載它。
InputStream in = SomeClass.class.getResourceAsStream("config.properties");
需要注意的是Java變量應該總是以小寫字母開頭:config
而不是Config
。
非常感謝!很有幫助。 – BustedSanta
如果它只是你擔心,你可以使用相對路徑的路徑:
Config.load(new FileInputStream("Config.properties"));
這將查找當前工作目錄。 upsdie:死簡單。缺點是:它不夠強大。如果您從其他位置啓動您的應用程序而未更改工作目錄,則不會找到該文件。
作爲領域在公共枚舉?您可能需要將路徑存儲在某個.java源文件或某些屬性文件中,而後者的「解決方案」僅僅是愚蠢的。 –