직렬화 및 역직렬화는 Java 객체와 바이트 시퀀스의 상호 변환을 의미하며 일반적으로 바이트 시퀀스를 저장하거나 전송할 때 사용됩니다. 다음은 Java에서 직렬화 및 역직렬화의 두 가지 간단한 예입니다. 시퀀스 및 역직렬화의 개념 먼저:
1. Java 직렬화 및 역직렬화
Java 직렬화는 Java 객체를 바이트 시퀀스로 변환하는 것을 의미합니다. 프로세스와 Java 역직렬화는 바이트 시퀀스를 복원하는 과정을 의미합니다. Java 객체로.
2. 직렬화와 역직렬화가 필요한 이유
두 프로세스가 원격으로 통신할 때 텍스트, 사진, 오디오, 비디오 등 다양한 유형의 데이터를 서로 보낼 수 있다는 것을 알고 있습니다. ., 이러한 데이터는 바이너리 시퀀스의 형태로 네트워크에서 전송됩니다. 그렇다면 두 개의 Java 프로세스가 통신할 때 프로세스 간 객체 전송이 이루어질 수 있습니까? 대답은 '예'입니다. 어떻게 하나요? 이를 위해서는 Java 직렬화 및 역직렬화가 필요합니다. 즉, 송신자는 Java 객체를 바이트 시퀀스로 변환한 다음 네트워크를 통해 전송해야 하고, 수신자는 바이트 시퀀스에서 Java 객체를 복구해야 합니다.
(1) 직렬화 및 역직렬화 파일:
import java.io.*; @SuppressWarnings("serial") class Person implements Serializable { public Person(String name, String sex, int age, int height) { this.name = name; this.sex = sex; this.age = age; this.height = height; } public String toString() { return "|" + this.name + "|" + this.sex + "|" + this.age + "|" + this.height + "|"; } public String name; public String sex; public int age; public int height; } public class SerialTest { public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException { Person p = new Person("Jim", "male", 28, 194); // 开始序列化 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream( new File("myTest.txt"))); oos.writeObject(p); // 反序列化 ObjectInputStream ois = new ObjectInputStream(new FileInputStream( new File("myTest.txt"))); Person p1 = (Person) ois.readObject(); System.out.println(p1.toString()); } }
import java.io.*; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; @SuppressWarnings("serial") class RoadInfo implements Serializable { public int id; public long MDN; public String NAME; public double LNG; public double LAT; public String ICON; } @SuppressWarnings("serial") class table_list implements Serializable { public String toString() { StringBuffer sb = new StringBuffer(); for (RoadInfo r : sequence) { sb.append("|"); sb.append(r.id); sb.append("|"); sb.append(r.MDN); sb.append("|"); sb.append(r.NAME); sb.append("|"); sb.append(r.LNG); sb.append("|"); sb.append(r.LAT); sb.append("|"); sb.append(r.ICON); sb.append("|\n"); } return sb.toString(); } public table_list(int count) { sequence = new RoadInfo[count]; for (int i = 0; i < count; i++) { sequence[i] = new RoadInfo(); } } public RoadInfo[] sequence; } public class XMLTest { /** * @param args */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub StringBuffer sb = new StringBuffer(); BufferedReader reader = new BufferedReader(new FileReader(new File( "friend_msg.xml"))); while (true) { String s = reader.readLine();// 读一行 if (s == null) { break; } sb.append(s); } XStream xs = new XStream(new DomDriver()); table_list db = (table_list) xs.fromXML(sb.toString()); System.out.println(db.toString()); } }