2011-06-09 88 views
2

我在同一文件夾conf中加載發出加載屬性文件

test.xml and test.properties 

時遇到問題。

我在dist文件夾裏面有一個myProject.jar,在conf文件夾裏面有一個 test.xml和test.properties。

要加載xml,我使用的是

document = reader.read(new File("../conf/test.xml"));//its working 

但是我在加載屬性文件時遇到問題, 我使用的是

Class_name.class.getResourceAsStream("../conf/test.properties"), 

    getResourceAsStream("conf/test.properties"), 
    getResourceAsStream("/test.properties"), 
    getResourceAsStream("test.properties"), 

沒有什麼能用於屬性文件。

任何幫助表示讚賞。

+1

嘗試把CONF在classpath中,只是做的getResourceAsStream( 「test.properties」) – Todd 2011-06-09 17:02:38

+1

同意;你需要決定你想如何定位文件。您正在使用的File構造函數是基於當前工作目錄的文件系統的完整路徑名或相對路徑名。 #getResourceAsStream將在類路徑中找到一個文件 - 正如Todd所說的,您需要在類路徑中包含'conf'目錄才能訪問它。根據你想裝運jar的方式(帶或不帶配置屬性文件)應該給你一些提示,以便選擇。 – 2011-06-09 17:12:14

回答

6

你爲什麼不把文件並使用FileInputStream

Properties properties = new Properties(); 
properties.load(new FileInputStream(fileName)); 

上面的代碼將採取屬性文件,並將其加載到屬性對象加載它。

2

區分Class.getResourceAsStream(...)ClassLoader.getResouceAsStream(...)是很重要的。來自Class的呼叫是相對路徑。所以,我想下面將工作:

Foo.class.getResourceAsStream("/conf/test.properties"), 

...提供conf/父在類路徑中。

如果這不起作用,請查看在您的環境中如何設置類加載器。您需要從包含conf目錄的類加載器進行查找。

1

記住XML/..what所以以往文件應該被封裝的本根目錄屬性

例如:com.abce.configuration ---> readfile.java

xyz.xml COM - > ABCD - >配置 - > readfile.java