java取配置文件
⑴ java讀取配置文件的幾種方法以及路徑問題
.類載入器讀取:
只能讀取classes或者類路徑中的任意資源,但是不適合讀取特別大的資源。
①獲取類載入器 ClassLoader cl = 類名.class.getClassLoader();
②調用類載入器對象的方法:public URL getResource(String name);
此方法查找具有給定名稱的資源,資源的搜索路徑是虛擬機的內置類載入器的路徑。
類 URL 代表一個統一資源定位符,它是指向互聯網」資源」的指針。
資源可以是簡單的文件或目錄,也可以是對更為復雜的對象的引用.
URL對象方法:public String getPath(),獲取此 URL 的路徑部分。
示例代碼:
2.類載入器讀取:
只能讀取classes或者類路徑中的任意資源,但是不適合讀取特別大的資源。
①獲取類載入器 ClassLoader cl = 類名.class.getClassLoader();
②調用類載入器對象的方法:public InputStream getResourceAsStream(String name);
返回讀取指定資源的輸入流。資源的搜索路徑是虛擬機的內置類載入器的路徑。
⑵ java中如何從當前項目中讀取運行另一項目中的配置文件
使用url統一資源定位符,前提是需要有訪問文件的許可權。
importjava.io.File;
importjava.net.URL;
importorg.apache.commons.io.FileUtils;
publicclassDownloadURLFile{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
Stringres=downloadFromUrl("http://images.17173.com/2010/www/roll/201003/0301sohu01.jpg","d:/");
System.out.println(res);
}
(String核猜帆url,Stringdir){
try{
URLhttpurl=newURL(url);
StringfileName兆配=getFileNameFromUrl(url);
System.out.println(fileName);
Filef=newFile(dir+fileName);
FileUtils.URLToFile(httpurl,f);
}catch(Exceptione){
e.printStackTrace();
return"Fault!";
}
return"Successful!";
}
(Stringurl){
Stringname=改雹newLong(System.currentTimeMillis()).toString()+".X";
intindex=url.lastIndexOf("/");
if(index>0){
name=url.substring(index+1);
if(name.trim().length()>0){
returnname;
}
}
returnname;
}
}
⑶ Java 獲取配置文件路徑
讀取配置文件 , xxx.properties放在webroot/WEB-INF/classes/目錄下
首先將配置文件轉換成InputStream,有兩種方式,原理一樣,都是通過類載入器得到資源:
(1)InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("xx.properties");
(2) InputStream inputStream =
this.getClass() .getClassLoader().getResourceAsStream( "xx.properties" );
調用對象的getClass()方法是獲得對象當前的類類型,這部分數據存在方法區中,
而後在類類型上調用 getClassLoader()方法是得到當前類型的類載入器,我們知道在Java中所有的類都是通過載入器載入到虛擬機中的,而且類載入器之間存在父 子關系,就是子知道父,父不知道子,這樣不同的子載入的類型之間是無法訪問的(雖然它們都被放在方法區中),所以在這里通過當前類的載入器來載入資源也就 是保證是和類類型同一個載入器載入的。
最後調用了類載入器的getResourceAsStream()方法來載入資源。
(3) 然後載入配置文件,讀取屬性值
Properties prop = new Properties();
prop.load(input);
String value = prop.getProperty("PropertyName");
input.close();