序列化与反序列化复习
程序员文章站
2022-03-11 17:46:29
...
序列化与反序列化应用场景:
场景一:内存对象需要在其它环境下使用
两个进程间进行网络通信时,无论是发送何种类型的数据,均需以二进制序列形式进行传送
发送方必须将数据对象(比如Java对象)转化为字节序列
接收方则需要将接收到的字节序列再还原成Java对象
场景二:内存对象需要在将来某个时间使用
将内存中的数据对象永久存储在磁盘中(持久化)
序列化与反序列化应用步骤:
案例要求:学员对象的序列化和反序列化
package cn.kgc.tangcco.chengxiangjain.xuliehua;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student implements Serializable {
private static final long serialVersionUID = -1534711655988290883L;// 只是一个序列化的标识
private String name;
private int age;
private String gender;
private String password;
}
package cn.kgc.tangcco.chengxiangjain.xuliehua;
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 SerializableObj {
public static void main(String[] args) {
//支持把对象写入到文件中----对象转为有序的字节数组过程(序列化过程)
ObjectOutputStream oos=null;
//支持把文件内容读后转为对象----文件内容是字节数组读取后转为对象(反序列化过程)
ObjectInputStream ois=null;
try {
//--------------------------------序列化过程
System.out.println("*******************序列化******************");
// 创建ObjectOutputStream输出流
oos=new ObjectOutputStream(new FileOutputStream("D:\\test.txt"));
//准备了一个学生对象
Student student=new Student("张飞", 20, "男", "1234");
System.out.println("姓名为:"+student.getName());
System.out.println("年龄为:"+student.getAge());
System.out.println("性别为:"+student.getGender());
System.out.println("密码为:"+student.getPassword());
// 对象序列化,写入输出流
//这个方法就是把对象写入到文件中(序列化步骤)
oos.writeObject(student);
//---------------------------------反序列化
System.out.println("*******************反序列化******************");
//创建ObjectInputStream输入流
ois=new ObjectInputStream(new FileInputStream("D:\\test.txt"));
//反序列化,强转类型
//读取文件内容转为对象 Object--->Student
Student stu1=(Student)ois.readObject();
//输出生成后对象信息
System.out.println("姓名为:"+stu1.getName());
System.out.println("年龄为:"+stu1.getAge());
System.out.println("性别为:"+stu1.getGender());
System.out.println("密码为:"+stu1.getPassword());
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
//关闭对象输出流
if (oos!=null) {
oos.close();
}
if (ois!=null) {
ois.close();
}
}catch (Exception e) {
e.printStackTrace();
}
}
}
}
上一篇: 【Electron学习】Windows系统环境配置与安装
下一篇: php怎么修改图片像素