Java学习笔记【十一、序列化】

序列化的条件

  • 实现Serializable接口
  • 所有属性必须是可序列化的,或标记为transient(不做序列化)

序列化-将对象输出为序列化文件

ObjectOutputStream

反序列化-将序列化结果读取为对象

ObjectInputStream

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;

    public class InputOutputStream {

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    People p = new People();
    p.name = "Tom";
    p.age = 18;
    p.sex = "female";
    p.num = 12321;

    String path = "E:/JavaFile/tempFile/p.ser";

    try {
        FileOutputStream fileOut = new FileOutputStream(path);
        ObjectOutputStream out = new ObjectOutputStream(fileOut);
        out.writeObject(p);
        out.close();
        fileOut.close();
        System.out.println("Write complete");

        People p2 = new People();
        FileInputStream fileIn = new FileInputStream(path);
        ObjectInputStream in = new ObjectInputStream(fileIn);
        p2 = (People) in.readObject();
        p2.Print();
        in.close();
        fileIn.close();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    }

    }

class People implements java.io.Serializable {
String name;
int age;
String sex;
transient int num;// 序列化后该属性未在序列化结果中,所以反序列化后该属性无值

void Print() {
    System.out.println("name:" + name + ",age:" + age + ",sex:" + sex + ",num:" + num);
}
}

转载于:https://www.cnblogs.com/shanelau/p/6493244.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值