一、簡(jiǎn)述
各種語(yǔ)言都有自己所支持的配置文件類型,Java支持的是.properties文件的讀寫。JDK內(nèi)置的java.util.Properties類為我們操作.properties文件提供了便利。
二、properties文件格式
文件示例:
#adaptertest init data
#手機(jī)設(shè)備號(hào)
mobiledevice=84c5f58a
#音箱設(shè)備號(hào)
miadevice=A3004100005P
…
“#”開(kāi)始的一行為注釋信息;
“=”左邊的我們稱之為key,“=”右邊的我們稱之為value。key是我們程序中的變量,而value是我們根據(jù)實(shí)際情況配置的。
key與value只能為字符串。
三、properties類中的主要方法
1)getProperty(String key)
用指定的鍵在此屬性列表中搜索屬性。也就是通過(guò)參數(shù)key,得到key所對(duì)應(yīng)的value。
2)load(InputStream inStream)
從輸入流中讀取屬性列表(鍵和元素對(duì))。以供getProperty( String key)來(lái)搜索。
3)setProperty(String key, String value)
調(diào)用Hashtable的方法put 。他通過(guò)調(diào)用基類的put方法來(lái)設(shè)置鍵-值對(duì)。
4)store(OutputStream out, String comments)
以適合使用load方法加載到Properties表中的格式,將此Properties表中的屬性列表(鍵和元素對(duì))寫入輸出流。與load方法相反,該方法將鍵-值對(duì)寫入到指定的文件中去。
5)clear()
清除所有裝載的鍵-值對(duì)。該方法在基類中提供
四、Java讀取Properties文件
Java讀取Properties文件的方法有很多,以下為使用java.util.Properties類的load()方法讀取Properties文件。
待讀取.properties文件需放到正確的工程文件目錄下,否則會(huì)報(bào)錯(cuò):.properties文件與project.properties文件在同一級(jí)目錄。
1)Properties文件
#adapter test init data
#手機(jī)設(shè)備號(hào)
mobiledevice=84c5f58a
#音箱設(shè)備號(hào)???
miadevice=A3004100005P
2)java代碼
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Iterator;
import java.util.Properties;
Properties prop = new Properties();
try {
??? //讀取文件
InputStream inputStream = newFileInputStream("adapter_test_initdata.properties");
//設(shè)置編碼格式為utf-8,處理中文亂碼問(wèn)題
BufferedReader bf = newBufferedReader(new InputStreamReader(inputStream, "utf-8"));
???prop.load(bf);
Iterator it=prop.stringPropertyNames().iterator();
while(it.hasNext()){
???????? Stringkey=it.next();
??????? ???? System.out.println(key+":"+prop.getProperty(key));
}
mobile_device = prop.getProperty("mobiledevice");
mia_device = prop.getProperty("miadevice");
?? inputStream.close();
}catch (Exception e) {
????????? System.out.println(e);
????????? e.printStackTrace();
}