您的位置:首页 > 编程语言 > Java开发

Java对象序列化和反序列化的工具方法

2018-02-27 09:20 429 查看
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

/**
* Java对象序列化和反序列化的工具方法
*/
public class ObjectSerializable implements Serializable {
private static final long serialVersionUID = 1L;

/**
* Java对象序列化
*/
public void putData(String filePath, Object data) throws Exception {
// 1. 检查该路径文件是否存在,不存在则创建
File file = new File(filePath);
createFileIfNotExists(file);

// 2. 创建输出流,将数据写入文件
ObjectOutputStream out = null;
try {
// 流创建
out = new ObjectOutputStream(new FileOutputStream(file));

// 序列化对象
out.writeObject(data);
} finally {
// 关闭流
if (null != out) {
out.close();
}
}
}

// 如果文件不存在,生成一个新文件
public void createFileIfNotExists(File file) throws IOException {
// 如果文件不存在,进行创建
if (!file.exists()) {
// 如果父目录不存在,创建父目录
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}

// 创建一个新的文件
file.createNewFile();
}
}

/**
* Java对象反序列化
*/
public Object getData(String filePath) throws Exception {
// 如果文件不存在,抛个异常
File file = new File(filePath);
if (!file.exists()) {
throw new FileNotFoundException(filePath);
}

// 创建输入流,从物件中读取数据
ObjectInputStream in = null;
Object object = null;
try {
// 流创建
in = new ObjectInputStream(new FileInputStream(file));

// 对象反序列化
object = in.readObject();
} finally {
// 关闭流
if (null != in) {
in.close();
}
}

// 返回反序列化后的对象
return object;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: