讀取配置文件 , 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();
2. java文件怎麼獲取項目下的配置文件
不同的配置文件 用不同的方法啊
xml格式的 用dom4j
對象流格式的用對象流讀取,
普通的文本格式,自己解析唄
3. java 怎麼讀取web jar中的某個配置文件
項目遷移的過程中發現以前的代碼維護性實在是差。
我把問題簡化為以下這專些簡單的代碼:屬
項目M
引用了項目
A.jar,這個A在lib目錄裡面
在A裡面放置了一個配置文件test.properties,
就放在jar的根目錄下。
A.jar
|___test.properties
在M中有一段代碼回去讀取這個A.jar里的配置文件,簡單一點就用下面這句話來調用。
Java
code
public
class
ConfigUtil
{
public
static
String
getInstance()
throws
Exception{
String
path
=
ConfigUtil.class.getResource("/").toString();
path
=
path.substring(0,
path.length()-8);//
System.out.println(path);//這里列印的結果顯示可以拿到當前類的絕對路徑
InputStream
f
=
new
FileInputStream("jar:"+path+"lib!/A.jar/"+"test.properties");
return
"xxx";
}
}
4. java讀取配置文件的幾種方法
java讀取配置文件的幾種方法如下:
方式一:採用ServletContext讀取,讀取配置文件的realpath,然後通過文件流讀取出來。因為是用ServletContext讀取文件路徑,所以配置文件可以放入在web-info的classes目錄中,也可以在應用層級及web-info的目錄中。文件存放位置具體在eclipse工程中的表現是:可以放在src下面,也可放在web-info及webroot下面等。因為是讀取出路徑後,用文件流進行讀取的,所以可以讀取任意的配置文件包括xml和properties。缺點:不能在servlet外面應用讀取配置信息。
方式二:採用ResourceBundle類讀取配置信息,
優點是:可以以完全限定類名的方式載入資源後,直接的讀取出來,且可以在非Web應用中讀取資源文件。缺點:只能載入類classes下面的資源文件且只能讀取.properties文件。
方式三:採用ClassLoader方式進行讀取配置信息
優點是:可以在非Web應用中讀取配置資源信息,可以讀取任意的資源文件信息
缺點:只能載入類classes下面的資源文件。
方法4 getResouceAsStream
XmlParserHandler.class.getResourceAsStream 與classloader不同
使用的是當前類的相對路徑
5. 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);
返回讀取指定資源的輸入流。資源的搜索路徑是虛擬機的內置類載入器的路徑。
6. linux 下java讀取配置文件
linux下也是文件系統,同樣的也可以使用file對象來讀取配置文件信息,示例如下:
import java.io.*;
public class FileToString {
public static String readFile(String fileName) {
String output = "";
File file = new File(fileName);//建立file對象
if(file.exists()){//判斷是否存在
if(file.isFile()){//判斷是否文件
try{
BufferedReader input = new BufferedReader (new FileReader(file));
StringBuffer buffer = new StringBuffer();
String text;
while((text = input.readLine()) != null)
buffer.append(text +"/n");//讀取內容進行拼接。
output = buffer.toString();
}
catch(IOException ioException){
System.err.println("File Error!");
}
}
else if(file.isDirectory()){//是否為文件夾
String[] dir = file.list();
output += "Directory contents:/n";
for(int i=0; i<dir.length; i++){
output += dir[i] +"/n";
}
}
}
else{
System.err.println("Does not exist!");
}
return output;
}
}
7. java紼嬪簭璇誨彇properties閰嶇疆鏂囦歡鍑虹幇涓鏂囦貢鐮
榪欎釜闂棰樻湁涓ょ嶅姙娉曪細
絎涓縐嶅姙娉曪細濡傛ゼ涓婃墍璇寸殑閭f牱涔熷彲浠ワ紝灝辨槸native2ascii -reverse -encoding gb2312 user.properties ActionName_zh_CN.properties榪欐牱浠ュ悗錛屼綘鎵撳紑ActionName_zh_CN.properties鐨勫唴瀹癸紝鍐嶅皢ActionName_zh_CN.properties鏂囦歡榪欐牱緗錛歯ative2ascii ActionName_zh_CN.properties userChange.properties 鐒跺悗浣犵殑紼嬪簭璇籾serChange.properties鐨勫唴瀹瑰氨鍙浠ャ
絎浜岀嶅姙娉曟槸錛
濡備綘浠g爜閲屽啓鐨勶紝浣犲彲浠ュ湪String username=property.getProperty("username");涔嬪悗錛屾坊鍔燡AVA浠g爜欏靛彲浠ュ皢涔辯爜杞涓轟腑鏂囩殑銆傜敤濡備笅璇鍙ュ氨鍙浠ヤ簡錛宺esultName=new String(username.getBytes("ISO-8859-1"),"gbk"); 鐒跺悗鍐嶇敤resultName灝卞彲浠ヤ簡錛屼笉榪囪繖鏍風殑璇濅綘涓嬮潰鐨凷tring password=property.getProperty("password");
閮芥參鎱㈢殑閫氳繃涓婇潰鐨刯ava浠g爜鍘昏漿銆
涓嶇煡閬撲綘瀵瑰弽灝勭啛鎮変笉錛熷傛灉鐔熸倝鐨勮瘽鍙浠ラ氳繃鍙嶅皠鏈哄埗鍘誨仛絎浜岀嶅姙娉曠殑杞鐮佸氨鏂逛究澶氫簡錛