android序列化(一)Serializable

概念:什么是序列化与反序列化

序列化:是将对象状态转换为可保存或传输的格式的过程

就是下面这个家伙Bean,本来是不能建立到磁盘中的,但是序列化之后,就可以保存到本地磁盘了
在这里插入图片描述
在这里插入图片描述
文件内容:
在这里插入图片描述

反序列化:将磁盘中的数据转为可在android中显示的值

就是从下面这个家伙user.txt中,获取值,设置到界面上去
在这里插入图片描述
在这里插入图片描述

1.全部代码:

public class SerializableTest {
    public static void main(String[] args) throws Exception {
        User user=new User();
        user.setName("sunweihao");
        user.setAge(100);
//        writeUser(user);
        //反序列化
        User user2=readUser();
        System.out.println(user2.toString());

    }

    /**
     * 反序列化:从磁盘中读取数据
     * @return
     * @throws Exception
     */
    private static User readUser() throws Exception {
        ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(new File("d://android/user.txt")));
        User objectUser = (User) objectInputStream.readObject();
        return objectUser;
    }

    /**
     * 序列化:将数据写到本地磁盘
     * @param user
     * @throws IOException
     */
    private static void writeUser(User user) throws IOException {
        //创建对象输出流
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("d://android/user.txt")));
        //输出对象到本地
        oos.writeObject(user);
        //关闭资源
        oos.close();
    }
}
public class User implements Serializable {
    private String name;
    //短暂的态,添加了这个关键字的变量是不会被序列化出去的
    private transient 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;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

执行结果:

2.步骤:

  1. 普通bean类实现Serializable接口即可
  2. 写入电脑磁盘中(序列化):
//创建对象输出流
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("d://android/user.txt")));
        //输出对象到本地
        oos.writeObject(user);
        //关闭资源
        oos.close();
  1. 读取:
ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(new File("d://android/user.txt")));
        User objectUser = (User) objectInputStream.readObject();
        return objectUser;

3.问题与关键:

下面中的transient加上后,是不会被序列化的

private transient int age;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值