大家好,又见面了,我是你们的朋友全栈君。
对于一般的类型都会实现该Serialized接口,例如:String、Data所以我们可以直接用。
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Date;
/** * 序列化对象(Serializable) * 将对象的状态信息转换为可以存储或传输的形式的过程。 * @author wenhua * */
public class ObjectOutDate {
public static void main(String[] args) throws IOException {
// 封装文件目录:即将序列化对象保存的文件
FileOutputStream out = new FileOutputStream("object.txt");
// 创建序列化对象
ObjectOutputStream oout = new ObjectOutputStream(out);
// 将需要序列化的对象写入该文件
oout.writeObject(new Date());// date包已经实现了Serializable接口所以直接保存
// 关闭资源
oout.close();
}
}
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.Date;
/** * 反序列化对象(即创建一个对象) * 序列化的对象Date、String已经实现了implements java.io.Serializable * @author wenhua * */
public class ObjectInDate {
public static void main(String[] args) throws Exception, IOException {
// 封装文件
FileInputStream inputStream = new FileInputStream("object.txt");
// 创建反序列化对象:即输出流
ObjectInputStream oin = new ObjectInputStream(inputStream);
// 接收对象
Date date = (Date) oin.readObject();
// 输出文件
System.out.println(date);// Tue May 19 17:44:23 CST 2020
// 关闭资源
oin.close();
}
}
import java.io.Serializable;
/** * 实现序列化接口的对象 * 注意:需要显示的声明序列化id号,不然当类信息改变时系统生成的id号就会改变 * transient/static关键字修饰的不被序列化 * @author wenhua * */
public class User implements Serializable {
/** * 为类生成一个版本号,序列化ID */
private static final long serialVersionUID = 1L;
private int sum;
private String name;
private transient Integer age;
private static Integer code;
public User() {
super();
}
public User(int sum, String name,Integer age,Integer code) {
super();
this.sum = sum;
this.name = name;
this.age = age;
this.code = code;
}
@Override
public String toString() {
return "User [sum=" + sum + ", name=" + name + ", age=" + age + ", code=" + code + "]";
}
}
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
/** * 使用自定义对象的序列化 * @author wenhua * */
public class ObjectOutUser {
public static void main(String[] args) throws IOException {
// 封装文件
FileOutputStream out = new FileOutputStream("user.txt");
// 创建序列化对象流
ObjectOutputStream oout = new ObjectOutputStream(out);
// 创建对象
User jim = new User(100,"Jim",21,1);
// 存储对象
oout.writeObject(jim);
// 关闭资源
oout.close();
}
}
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
/** * 反序列化自定义对象 * @author wenhua * */
public class ObjectInUser {
public static void main(String[] args) throws Exception, IOException {
// 封装文件目录
FileInputStream inputStream = new FileInputStream("user.txt");
// 创建反序列化对象流
ObjectInputStream oin = new ObjectInputStream(inputStream);
// 接收对象
User user = (User)oin.readObject();// 注意重写toString方法
System.out.println(user);// User [sum=100, name=tom, age=null, code=null]
// 关闭资源
oin.close();
}
}
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/149649.html原文链接:https://javaforall.cn