前提:
方法:
方法:
import java.io.*; /** * @ClassName ObjectOutputStreamWriteObjectExample * @projectName: object1 * @author: Zhangmingda * @description: Person 类实现序列化接口 * date: 2021/4/18. */ public class ObjectOutputStreamWriteObjectExample { //实现接口Serializable可以序列化 private static class Person implements Serializable { String name; int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Person{" + "name=‘" + name + ‘\‘‘ + ", age=" + age + ‘}‘; } } //序列化方法 private static void writeObject(Person person,String dstPath) { try(ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(dstPath))){ objectOutputStream.writeObject(person); } catch (IOException e) { e.printStackTrace(); } } //反序列化方法 private static<T> void readObject(String srcPath){ try(ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(srcPath))){ T person = (T) objectInputStream.readObject(); System.out.println(person.getClass()); System.out.println(person); /** * class ObjectOutputStreamWriteObjectExample$Person * Person{name=‘钱老大‘, age=30} */ } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static void main(String[] args) { Person person = new Person("钱老大",30); String dstPath = "输入输出文件读写/src/test/output/object-save.txt"; writeObject(person,dstPath); String srcPath = "输入输出文件读写/src/test/output/object-save.txt"; readObject(srcPath); } }
import java.io.*; /** * @ClassName ObjectOutputStreamWriteObjectExample * @projectName: object1 * @author: Zhangmingda * @description: Person 类实现序列化接口 * date: 2021/4/18. */ public class ObjectOutputStreamWriteObjectExample { //实现接口Serializable可以序列化 private static class Person implements Serializable { String name; int age; Job job; public Person(String name, int age, Job job) { this.name = name; this.age = age; this.job = job; } public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Person{" + "name=‘" + name + ‘\‘‘ + ", age=" + age + ", job=" + job.getName() + ‘}‘; } } private static class Job implements Serializable { private String name; public Job(String name) { this.name = name; } public String getName() { return name; } } //序列化方法 private static void writeObject(Person person,String dstPath) { try(ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(dstPath))){ objectOutputStream.writeObject(person); } catch (IOException e) { e.printStackTrace(); } } //反序列化方法 private static<T> void readObject(String srcPath){ try(ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(srcPath))){ T person = (T) objectInputStream.readObject(); System.out.println(person.getClass()); System.out.println(person); /** * class ObjectOutputStreamWriteObjectExample$Person * Person{name=‘钱老大‘, age=30, job=教师} */ } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static void main(String[] args) { Person person = new Person("钱老大",30,new Job("教师")); String dstPath = "输入输出文件读写/src/test/output/object-save.txt"; writeObject(person,dstPath); String srcPath = "输入输出文件读写/src/test/output/object-save.txt"; readObject(srcPath); } }
存入:Person{name=‘钱老大‘, age=30, job=教师}
读取:Person{name=‘钱老大‘, age=0, job=教师} 【不被反序列化的字段置为 对应数据类型默认值】
import java.io.*; /** * @ClassName ObjectOutputStreamWriteObjectExample * @projectName: object1 * @author: Zhangmingda * @description: Person 类实现序列化接口 * date: 2021/4/18. */ public class ObjectOutputStreamWriteObjectExample { //实现接口Serializable可以序列化 private static class Person implements Serializable { private static final long serialVersionUID = 769204331117184540L; private String name; private transient int age; private Job job; public Person(String name, int age, Job job) { this.name = name; this.age = age; this.job = job; } public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Person{" + "name=‘" + name + ‘\‘‘ + ", age=" + age + ", job=" + job.getName() + ‘}‘; } } private static class Job implements Serializable { private String name; public Job(String name) { this.name = name; } public String getName() { return name; } } //序列化方法 private static void writeObject(Person person,String dstPath) { try(ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(dstPath))){ objectOutputStream.writeObject(person); } catch (IOException e) { e.printStackTrace(); } } //反序列化方法 private static<T> void readObject(String srcPath){ try(ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(srcPath))){ T person = (T) objectInputStream.readObject(); System.out.println(person.getClass()); System.out.println(person); /** * class ObjectOutputStreamWriteObjectExample$Person * Person{name=‘钱老大‘, age=30, job=教师} */ } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static void main(String[] args) { // Person person = new Person("钱老大",30,new Job("教师")); // String dstPath = "输入输出文件读写/src/test/output/object-save.txt"; // writeObject(person,dstPath); String srcPath = "输入输出文件读写/src/test/output/object-save.txt"; readObject(srcPath); } }
原文:https://www.cnblogs.com/zhangmingda/p/14674931.html