Java XMLEncoder保存对象、XMLDecoder.修复者
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 聊天和信使! URL: https://chat-messenger.com/
◆C:\FreeSoft.xml 内容。
使用系统时的注意事项
但在 Chat&Messenger 中实际使用时,这种情况极为罕见,但我们确认了一个问题,即使用 java.beans.XMLEncoder 和 java.beans.XMLDecoder 类输出 XML 时,文件会变成 0 字节。XMLEncoder.
如果读取的是 0 字节文件,"标准错误输出 "中将记录 ParseException。
原因是创建 FileOutputStream 实例时文件变空。
我相信当 Java 进程在实例化 FileOutputStream 之后但在输出 XML 数据之前关闭时,就会发生这种情况。
为了解决这个问题,Chat&Messenger 已创建了一个备份文件。