IO流加强之序列化

    xiaoxiao2021-03-25  166

    import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import org.junit.Test;

    /*序列化    将一个对象存放到某种类型的永久存储器上称为保持。如果一个对象可以被存放到磁盘或磁带上,    或者可以发送到另外一台机器并存放到存储器或磁盘上,那么这个对象就被称为可保持的。    (在Java中,序列化、持久化、串行化是一个概念。) java.io.Serializable接口没有任何方法,它只作为一个“标记者”, 用来表明实现了这个接口的类可以考虑串行化。 类中没有实现Serializable的对象不能保存或恢复它们的状态。   *对象图 当一个对象被串行化时,只有对象的数据被保存;方法和构造函数不属于串行化流。 如果一个数据变量是一个对象,那么这个对象的数据成员也会被串行化。 树或者对象数据的结构,包括这些子对象,构成了对象图。  *瞬时 transient   防止对象的属性被序列化

    public class SerializeDemo {//将person信息序列化存储起来,然后读取出来 @Test          public void demo1(){         try { ObjectOutputStream out = new ObjectOutputStream( new FileOutputStream("f:\\a\\c.txt")); Person p2 = new Person("rose",20); out.writeObject(p2); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }          } @Test          public void demo2(){         try { ObjectInputStream in = new ObjectInputStream(  new FileInputStream("f:\\a\\c.txt")); Person p = (Person) in.readObject(); System.out.println(p); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }                    } } //只有对象中的非静态变量才会被序列化, 静态变量和方法都是不会被存入文件的。    class Person implements Serializable{   private String name;   private int age;   public static int count; //序列化时,静态变量是不会存在于对象图即静态变量是不会被存入的。 private transient int num = 30; //如果不想序列化某个非静态变量, 可以把它设成瞬时 public Person(String name, int age) { super(); this.name = name; this.age = age; count++; } 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; } @Override public String toString() { return name + ", " + age+", count:"+count+", num:"+num; }    }
    转载请注明原文地址: https://ju.6miu.com/read-816.html

    最新回复(0)