Java的Properties類
阿新 • • 發佈:2018-02-18
enume 獲取項目路徑 test add 默認 trac gpo adding 編譯期
Java在util包下提供了一個Properties類來操作Properties資源文件:
public class Properties extends Hashtable<Object, Object>
它繼承了Hashtable<Object, Object> 是 Dictionary<K,V>的間接子類。
同時,它實現了Serializable, Cloneable, Map<Object, Object> 接口。
直接的子類是Provider
Properties類表示屬性的持久化,在程序中的屬性通常是暫時存在的。如果我們需要讓屬性長久存在,那麽就需要把屬性存入數據庫或者文件當中,Properties類用來將屬性存入properties文件當中,以持久化。
Properties可保存在流中或者從流當中加載,屬性列表中每一個鍵值都是字符串。
它實現了Map接口,當然也可以使用put等方法,但是不建議使用put,因為該方法允許其值是非字符形,所以為了值的安全,我們建議使用setProperty方法,這樣在編譯期就可以檢查值是否正確。
如果是xml文件格式來存儲properties屬性,那麽需要聲明
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
例如:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <entry key="age">40</entry> <entry key="name">lay</entry> </properties>
API詳見:
方法摘要 | |
---|---|
String |
getProperty(String key) 用指定的鍵在此屬性列表中搜索屬性。 |
String |
getProperty(String key, String defaultValue) 用指定的鍵在屬性列表中搜索屬性。 |
void |
list(PrintStream out) 將屬性列表輸出到指定的輸出流。 |
void |
list(PrintWriter out) 將屬性列表輸出到指定的輸出流。 |
void |
load(InputStream inStream) 從輸入流中讀取屬性列表(鍵和元素對)。 |
void |
load(Reader reader) 按簡單的面向行的格式從輸入字符流中讀取屬性列表(鍵和元素對)。 |
void |
loadFromXML(InputStream in) 將指定輸入流中由 XML 文檔所表示的所有屬性加載到此屬性表中。 |
Enumeration<?> |
propertyNames() 返回屬性列表中所有鍵的枚舉,如果在主屬性列表中未找到同名的鍵,則包括默認屬性列表中不同的鍵。 |
void |
save(OutputStream out, String comments) 已過時。 如果在保存屬性列表時發生 I/O 錯誤,則此方法不拋出 IOException。保存屬性列表的首選方法是通過 store(OutputStream out, String comments) 方法或 storeToXML(OutputStream os, String comment) 方法來進行。 |
Object |
setProperty(String key, String value) 調用 Hashtable 的方法 put 。 |
void |
store(OutputStream out, String comments) 以適合使用 load(InputStream) 方法加載到 Properties 表中的格式,將此 Properties 表中的屬性列表(鍵和元素對)寫入輸出流。 |
void |
store(Writer writer, String comments) 以適合使用 load(Reader) 方法的格式,將此 Properties 表中的屬性列表(鍵和元素對)寫入輸出字符。 |
void |
storeToXML(OutputStream os, String comment) 發出一個表示此表中包含的所有屬性的 XML 文檔。 |
void |
storeToXML(OutputStream os, String comment, String encoding) 使用指定的編碼發出一個表示此表中包含的所有屬性的 XML 文檔。 |
Set<String> |
stringPropertyNames() 返回此屬性列表中的鍵集,其中該鍵及其對應值是字符串,如果在主屬性列表中未找到同名的鍵,則還包括默認屬性列表中不同的鍵。 |
// 個別方法使用樣例
public class test { public static void main(String[] args) { InputStream inputStream = null; // 從xml中讀取 inputStream = test.class.getResourceAsStream("/fileXml.xml"); Properties user = new Properties(); try { user.loadFromXML(inputStream); user.setProperty("age", "40"); System.out.println(user.getProperty("name")); System.out.println(user.getProperty("age")); // 獲取項目路徑 String path = test.class.getResource("/").getPath(); System.out.println(path); // 輸出為xml, 默認為 utf-8 user.storeToXML(new FileOutputStream(path + "/file.xml"), "評論內容"); user.list(System.out); } catch (IOException e) { e.printStackTrace(); } } }
Java的Properties類