zoukankan      html  css  js  c++  java
  • JAVA中序列化和反序列化

    一般程序在运行时,产生对象,这些对象随着程序的停止运行而消失(java回收机制)
    但如果我们想把某些对象(因为是对象,所以有各自不同的特性)保存下来,
    在程序终止运行后,这些对象仍然存在,可以在程序再次运行时读取这些对象的值,
    或者在其他程序中利用这些保存下来的对象。这种情况下就要用到对象的序列化。

    对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整性和可传递性。
    如通过网络传输,或者把一个对象保存成一个文件的时候,要实现序列化接口

    implements Serializable就是用来标识这个类的对象可以被序列化,如果不标识,则不可序列化。

    public class Pig implements Serializable {
    private String name;

    //属性前加了transient,表示序列化时不会被写到文件中,序列化时把它忽略
    transient private int price;
    private int age;
    public Pig() {
    super();
    }
    public Pig(String name, int price, int age) {
    super();
    this.name = name;
    this.price = price;
    this.age = age;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public int getPrice() {
    return price;
    }
    public void setPrice(int price) {
    this.price = price;
    }
    public int getAge() {
    return age;
    }
    public void setAge(int age) {
    this.age = age;
    }

    //测试类

    public class Test {
    public static void main(String[] args) throws Exception{
    Pig p=new Pig("猪坚强", 2000, 6);
    //序列化 对象---文件
    FileOutputStream os=new FileOutputStream("d:/pig.dat");
    //转成对象流
    ObjectOutputStream oos=new ObjectOutputStream(os);
    oos.writeObject(p);
    oos.close();
    os.close();

    //反序列化 文件---对象
    FileInputStream is=new FileInputStream("d:/pig.dat");
    //转成对象流
    ObjectInputStream ois=new ObjectInputStream(is);
    Pig p1=(Pig)ois.readObject();
    System.out.println(p1.getName()+" "+p1.getPrice()+" "+p1.getAge());
    }
    }

  • 相关阅读:
    ZZ 一些有意思的算法代码
    ff 怎样让新打开的标签就放在当前页面的右边
    111
    Windows平台下GO语言编译器(GOwindows)
    My Bookmarks
    使用googleperftools的tcmalloc
    memcached安装及测试
    erlang 入门(1)
    MS UI Automation
    twisted: echo server
  • 原文地址:https://www.cnblogs.com/laotan/p/3652857.html
Copyright © 2011-2022 走看看