序列化和反序列化 工具类
序列化
下面直接将序列化和反序列化,直接集成方法,可以直接使用
MySerializable.mySerializable(obj,fileName);
MySerializable.myDeserializable(obj,fileName)
项目上建立一个Util 包用来包含 序列化和反序列化工具,如图:
package Util;
import java.io.FileReader;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
/**
* @program: IO 流
* @description: 序列化和反序列化工具类
* fileName 比如: 我.txt
* @author: 白嫖怪AE
* @create: 2021-11-21 15:27
**/
public class MySerializable {
/**
* 将对象序列化到指定文件中
* @param obj
* @param fileName
* */
public static void mySerializable(Object obj,String fileName) throws IOException {
// 序列化
OutputStream outputStream = new OutputStream(fileName);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
objectOutputStream.writeObject(obj);
objectOutputStream.close();
}
/**
* 从指定文件中反序列化对象
* @param fileName
* @return
* */
public static Object myDeserializable(String fileName) throws IOException,ClassNotFoundException{
// 反序列化
InputStream inputStream = new FileInputStream(fileName);
ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);
Object object = objectInputStream.readObject();
return object;
}
}
一个真实项目的 序列化和反序列化工具的例子
package com.pojo.Util;
import java.io.*;
/**
* @program: ***********
* @description: 文件读写的工具类:方法都推荐静态
* @author: @景
* @create: 2021-6-12 17:06
**/
public class IO_Util {
/**
* 从指定的文件中读取数据,即反序列化
* @param fileName
* @return
* */
public static Object readFile(String fileName) throws IOException, ClassNotFoundException {
// 找到对应 fileName 文件, 通过字节流拿到 ObjectInputStream.readObject(); 数据
FileInputStream fileInputStream = new FileInputStream(fileName);
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
return objectInputStream.readObject();
}
/**
* 写入数据到指定文件中
* @param obj
* @param fileName
* */
public static void writeFile(Object obj,String fileName) throws IOException {
// 根据 把数据 写入 fileName 文件中
FileOutputStream fileOutputStream = new FileOutputStream(fileName);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
// obj 数据
objectOutputStream.writeObject(obj);
}
}