Java序列化和反序列化-(新手用于记录每天的作业)
实例:
lx1:
import java.io.*; public class xuliehua { public static void main(String[] args) throws Exception { lx2(); } public static void lx2() throws Exception { //创建读入的对象,指定盘符、文件名称及类型。 FileInputStream fis = new FileInputStream("D:\\ja.txt"); //创建反序列化流,(readObject() 读对象) ObjectInputStream ois = new ObjectInputStream(fis); //读取对象内容。 Object obj = ois.readObject(); //打印。 System.out.println(obj); //结束释放资源。 ois.close(); }
lx2:
public static void lx1() throws Exception { //指定要写出的盘符、文件名称及类型,如果没有就创建。 FileOutputStream fos = new FileOutputStream("D:\\ja.txt"); //创建写出对象的序列化流。构造方法传递字节输出流。 ObjectOutputStream oos = new ObjectOutputStream(fos); //自定义要写出的美容。(在构造方法里定义了什么类型就传什么) lx1Person p = new lx1Person("徐锦江",20); //打印。 oos.writeObject(p); //结束资源释放。 oos.close(); //从内存到硬盘 是写出。 //从硬盘到内存 是读入。 } }
lx2Person类:
import java.io.Serializable; public class lx1Person implements Serializable{ //Serializable接口是启用其序列化功能的接口。 // 实现java.io.Serializable 接口的类是可序列化的。 // 没有实现此接口的类将不能使它们的任意状态被序列化或逆序列化。 public String name; public int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public lx1Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "lx1Person{" + "name='" + name + '\'' +", age=" + age + '}'; } }