持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情
大家好,我是尚影嫣🌷,一名Java后端程序媛。如果您喜欢我的文章,欢迎点赞➕关注❤️,让我们一起成为更好的我们~🥰
序列化实现
把对象的字节序列永久保存到硬盘上,通常存放在一个文件中(序列化对象) 在网络上传送对象的字节序列(网络传输对象) 实际上就是将数据持久化,防止一直存储在内存当中,消耗内存资源。而且序列化后也能更好的便于网络运输何传播。
序列化:将java对象转换为字节序列。 反序列化:把字节序列回复为原先的java对象。
下面我们来看一下具体的用法
package yanf.base;
import java.io.*;
public class XLHDemo {
public static void main(String[] args) throws IOException, ClassNotFoundException {
//调用序列化
serialize();
//调用反序列化
deserialize();
}
/**
* 对象序列化示例
*/
public static void serialize() throws IOException {
Book b = new Book("《唐诗三百首》", "《唐诗三百首》共选入唐代诗人77位,其中五言古诗33首,乐府46首,七言古诗28首,七言律诗50首,五言绝句29首,七言绝句51首,诸诗配有注释和评点。 ");
//序列化
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("d://book.txt"));
oos.writeObject(b);
//关闭对象输出流
oos.close();
System.out.println("序列化完成!已生成book.txt文件。");
System.out.println("------------------------------------------------");
}
/**
* 对象反序列化示例
*/
public static void deserialize() throws IOException, ClassNotFoundException {
//反序列化
ObjectInputStream objectInputStream =
new ObjectInputStream(new FileInputStream(new File("d://book.txt")));
Book book = (Book) objectInputStream.readObject();
objectInputStream.close();
System.out.println("反序列化完成!结果如下:");
System.out.println(book);
}
/**
* 对象实现序列化
*/
static class Book implements Serializable {
//书名
private String name;
//内容
private String info;
public Book(String name, String info) {
this.name = name;
this.info = info;
}
public Book() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + ''' +
", info='" + info + ''' +
'}';
}
}
}
运行结果: