簡體   English   中英

如何為屬性文件指定路徑

[英]How to Specify Path for Properties file

我正在使用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...

我也只是建議,但您也可以通過命令行參數將完整路徑傳遞到配置文件,例如:

java YourApp -config C:\\config.properties

與應用程序打包在一起的屬性文件不應使用文件系統來加載,而應使用類加載器來加載。 確實,將應用程序打包后,屬性文件將與.class文件一起嵌入jar文件中。

如果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

將配置文件放在類路徑(您的.class文件所在的位置)中,並使用

getClass().getClassLoader().getResourceAsStream(_path_to_config_file);

有兩種方法可以在運行時獲取配置文件的路徑。

a)從數據庫中獲取。 b)從在服務器級別配置的JVM的自定義屬性中獲取它最佳過程是“ b”,如果更改了路徑,則可以隨時更改JVM的屬性,然后只需重新啟動服務器即可。

如果這只是您擔心的路徑,則可以使用相對路徑:

Config.load(new FileInputStream("Config.properties"));

這將在當前工作目錄中查找。 壞話:簡單死了。 不利之處:它沒有那么強大。 如果您從其他地方啟動應用程序而之前未更改工作目錄,則將找不到該文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM