ชวา XMLEncoderบันทึกวัตถุด้วยXMLDecoderคืนค่าด้วย
ชวาวัตถุด้วยรูปแบบ XMLแนะนำโปรแกรมตัวอย่างประหยัดด้วย .
สำหรับเอาต์พุต XMLjava.beans.XMLEncoderใช้.
อีกด้วยjava.beans.XMLDecoderนอกจากนี้เรายังจะแนะนำโปรแกรมตัวอย่างที่ใช้สิ่งนี้เพื่อกู้คืนอ็อบเจ็กต์ที่บันทึกไว้
โปรแกรมตัวอย่าง
- ฟิลด์ที่ประกาศไพรเวตจะถูกบันทึกไว้เมื่อคุณกำหนดเมธอด getter และ setter
- เฉพาะการเปลี่ยนแปลงตัวแปรเท่านั้นที่จะถูกบันทึกลงในไฟล์ XML
- คุณยังสามารถระบุ java.util.HashMap, java.util.ArrayList ฯลฯ เป็นอ็อบเจ็กต์ที่จะบันทึก สิ่งนี้มีประโยชน์สำหรับการบันทึกสถานะของออบเจ็กต์
// ส่งออกข้อมูลไบต์ไปยังไฟล์
fileStream = FileOutputStream ใหม่ (เส้นทาง);
fileStream.write(xmlbuff);
fileStream.flush();
} ในที่สุด {
ถ้า (enc != null) {
enc.ปิด();
}
ถ้า (ออก != null) {
ออก.ปิด();
}
ถ้า (fileStream != null) {
fileStream.ปิด();
}
}
}
/**
* กู้คืนวัตถุจากไฟล์ XML ที่เส้นทางที่ระบุ [เส้นทาง]
* *ไฟล์ XML จะต้องบันทึกโดยใช้ java.beans.XMLEncoder
* @param path เส้นทางที่เก็บอ็อบเจ็กต์
* @ พ่น FileNotFoundException
* หากไม่มีไฟล์ที่ระบุโดยชื่อพาธที่ระบุ
*/
วัตถุคงที่สาธารณะ readXML (เส้นทางสตริง) พ่น FileNotFoundException {
XMLDecoder d = null;
พยายาม {
d = XMLDecoder ใหม่ (BufferedInputStream ใหม่ (
FileInputStream ใหม่ (เส้นทาง)));
กลับ d.readObject();
} ในที่สุด {
ถ้า (ง != โมฆะ) {
ง.ปิด();
}
}
}
*คลาสต่อไปนี้จะถูกใช้เป็นตัวอย่างของคลาสที่จะบันทึก
ผลการดำเนินการ
◆ตัวอย่างการดำเนินการ
// กู้คืนอินสแตนซ์ของคลาส FreeSoft จาก XML
FreeSoft freeSoft2 = (FreeSoft)readXML(“C:\\FreeSoft.xml”);
System.out.println(“ชื่ออ่อน:”+freeSoft2.getName());
System.out.println(“URL:”+freeSoft2.getUrl());
} จับ (ข้อยกเว้นจ) {
e.printStackTrace();
}
}
◆ผลลัพธ์เอาท์พุต
ชื่อซอฟต์แวร์: Chat & Messenger ทั้งแชทและ Messenger! ! URL: https://chat-messenger.com/
◆เนื้อหาของ C:\\FreeSoft.xml
ข้อควรทราบเมื่อใช้
คลาส java.beans.XMLEncoder และ java.beans.XMLDecoder มีประโยชน์ แต่เมื่อนำไปใช้จริงใน Chat&Messenger ในกรณีที่หายากมาก เมื่อส่งออกไปยัง XML ด้วย java.beans.XMLEncoder ไฟล์จะกลายเป็น 0 ไบต์ กำลังยืนยัน
หากอ่านไฟล์ขนาด 0 ไบต์ ParseException จะถูกบันทึกใน "เอาต์พุตข้อผิดพลาดมาตรฐาน"
เหตุผลก็คือ ไฟล์จะว่างเปล่าเมื่อมีการสร้างอินสแตนซ์ FileOutputStream
ฉันเชื่อว่ามันเกิดขึ้นเมื่อกระบวนการ Java ถูกปิดหลังจากสร้างอินสแตนซ์ FileOutputStream แต่ก่อนที่จะส่งออกข้อมูล XML
เนื่องจากปัญหานี้ Chat&Messenger จึงสร้างไฟล์สำรองเพื่อหลีกเลี่ยงปัญหานี้