Java XML編碼器保存對象,XML解碼器恢復與
Java對象與XML格式介紹一個已儲存的範例程式。
對於 XML 輸出java.beans.XMLEncoder使用。
還java.beans.XMLDecoder我們還將介紹一個使用它來恢復已儲存的物件的範例程式。
範例程式
- 當您定義 getter 和 setter 方法時,會儲存聲明為私有的欄位。
- 只有變數的變更才會儲存到 XML 檔案中。
- 也可以指定java.util.HashMap、java.util.ArrayList等作為保存的物件。這對於簡單地保存物件的狀態很有用。
// 輸出位元組資料到文件
fileStream = new FileOutputStream(路徑);
fileStream.write(xmlbuff);
fileStream.flush();
} 最後 {
if (enc != null) {
enc.close();
}
如果(輸出!=空){
關閉();
}
if (fileStream != null) {
檔案流.close();
}
}
}
/**
* 從指定路徑[path]處的XML檔案還原物件。
* *XML 檔案必須使用 java.beans.XMLEncoder 儲存。
* @param path 物件儲存的路徑。
* @拋出FileNotFoundException
* 如果指定路徑名指示的檔案不存在
*/
公共靜態物件 readXML(字串路徑)拋出 FileNotFoundException {
XMLDecoder d = null;
嘗試 {
d = 新 XMLDecoder(新 BufferedInputStream(
新的 FileInputStream(路徑)));
返回 d.readObject();
} 最後 {
如果(d!=空){
d.close();
}
}
}
*以下班級將用作要保存的班級的樣本。
執行結果
◆執行範例
// 從 XML 恢復 FreeSoft 類別的實例
FreeSoft freeSoft2 = (FreeSoft)readXML(“C:\\FreeSoft.xml”);
System.out.println(“軟體名稱:”+freeSoft2.getName());
System.out.println(“URL:”+freeSoft2.getUrl());
} catch (異常 e) {
e.printStackTrace();
}
}
◆輸出結果
軟體名稱:Chat & Messenger 既聊天又信差! !網址:https://chat-messenger.com/
◆C:\\FreeSoft.xml 的內容
使用時的注意事項
java.beans.XMLEncoder 和 java.beans.XMLDecoder 類別很有用,但是當在 Chat&Messenger 中實際使用時,在極少數情況下,當使用 java.beans.XMLEncoder 輸出到 XML 時,檔案會變成 0 位元組。
如果讀取0位元組文件,則會在「標準錯誤輸出」中記錄ParseException。
原因是創建 FileOutputStream 實例時檔案變空。
我相信當 Java 進程在實例化 FileOutputStream 之後但在輸出 XML 資料之前關閉時,就會發生這種情況。
由於此問題,Chat&Messenger 會建立一個備份檔案來避免此問題。