Java XMLEncoderLưu đối tượng,XMLConcoderĐã khôi phục
Javavới đối tượngĐịnh dạng XMLDưới đây là một chương trình mẫu minh họa cách lưu dữ liệu.
Kết quả đầu ra XML bao gồmjava.beans.XMLEncoderHãy sử dụng cái này.
Cũngjava.beans.XMLDecoderChúng tôi cũng sẽ giới thiệu một chương trình mẫu sử dụng phương pháp này để khôi phục các đối tượng đã lưu.
Chương trình mẫu
- Các trường được khai báo là private sẽ được lưu lại khi các phương thức Getter và Setter được định nghĩa.
- Tệp XML chỉ được lưu nếu có sự thay đổi đối với các biến.
- Bạn cũng có thể chỉ định các đối tượng cần lưu, chẳng hạn như java.util.HashMap hoặc java.util.ArrayList. Điều này rất tiện lợi để lưu trạng thái của một đối tượng một cách đơn giản.
// Xuất dữ liệu byte ra tệp
fileStream = new FileOutputStream(path);
fileStream.write(xmlbuff);
fileStream.flush();
} Cuối cùng {
nếu (enc != null) {
enc.close();
}
nếu (đầu ra khác null) {
out.close();
}
nếu (fileStream != null) {
fileStream.close();
}
}
}
/**
* Khôi phục các đối tượng từ tệp XML tại đường dẫn được chỉ định [path].
* Tệp XML phải được lưu bằng java.beans.XMLEncoder.
* @param path Đường dẫn nơi đối tượng được lưu trữ.
* @throwsFileNotFoundException
* Nếu tệp được chỉ định bởi tên đường dẫn không tồn tại
*/
public static Object readXML(String path) throws FileNotFoundException {
XMLDecoder d = null;
thử {
d = new XMLDecoder(new BufferedInputStream(
new FileInputStream(path));
return d.readObject();
} Cuối cùng {
nếu (d != null) {
d.close();
}
}
}
*Lớp sau đây sẽ được sử dụng làm ví dụ về một lớp cần được lưu lại.
Kết quả thực thi
◆Ví dụ
// Khôi phục thể hiện của lớp FreeSoft từ XML
FreeSoft freeSoft2 = (FreeSoft)readXML(“C:\\FreeSoft.xml”);
System.out.println("Tên phần mềm: " + freeSoft2.getName());
System.out.println(“URL:”+freeSoft2.getUrl());
} catch (Exception e) {
e.printStackTrace();
}
}
◆Kết quả đầu ra
Tên phần mềm: Chat & Messenger Ứng dụng trò chuyện và nhắn tin! URL: https://chat-messenger.com/
◆Nội dung của C:\\FreeSoft.xml
Những điểm cần lưu ý khi sử dụng dịch vụ
Mặc dù các lớp java.beans.XMLEncoder và java.beans.XMLDecoder rất tiện lợi khi sử dụng thực tế với Chat&Messenger, chúng tôi đã quan sát thấy một sự cố cực kỳ hiếm gặp là tệp tin bị thu nhỏ thành 0 byte khi xuất ra XML bằng cách sử dụng java.beans.XMLEncoder.
Việc đọc một tập tin có dung lượng bằng 0 sẽ dẫn đến lỗi ParseException được ghi vào "đầu ra lỗi chuẩn".
Điều này là do tập tin trở nên trống rỗng khi thể hiện FileOutputStream được tạo.
Tôi tin rằng điều này xảy ra khi tiến trình Java tắt sau khi tạo một thể hiện FileOutputStream nhưng trước khi xuất dữ liệu XML.
Chat&Messenger đang giải quyết vấn đề này bằng cách tạo các tệp sao lưu để khắc phục sự cố.
