步骤:
创建实体类 user.java
public class user implements Serializable{
private static final long serialVersionUID = 1L;
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} @Override
public String toString() {
return "user [name=" + name + ", age=" + age + "]";
}
}
创建序列化工具类 SerializableUtil.java:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class SerializableUtil { public static void writeObject( Object msg) {
try{
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("H:/test.txt"));
//文件在实际项目中肯定是动态的,测试先写死
oos.writeObject(msg);
oos.flush();
//缓冲流
oos.close();
//关闭流
System.out.println("序列化成功!");
} catch (Exception e)
{
e.printStackTrace();
}
}
public static Object readObject() {
ObjectInputStream oin = null;
Object mts = null;
try{
oin = new ObjectInputStream(new FileInputStream("H:/test.txt"));
mts =oin.readObject();
oin.close();
System.out.println("反序列化成功!");
} catch (Exception e)
{
e.printStackTrace();
}
return mts;
}
}
测试方法:
public static void main(String[] args) {
user user = new user();
user.setAge(24);
user.setName("张三");
SerializableUtil.writeObject(user);
user user2 = new user();
user2 = (user) SerializableUtil.readObject();
System.out.println(user2.toString());
}
结果:
序列化成功!
反序列化成功!
user [name=张三, age=24]
注意: 序列化工具类不仅可以序列化一个类,也可以是一个集合,工具类是不要变化的,如果实际项目中文件地址要变化也可以用参数的方式传入。
【java —— 序列化和反序列化实例】序列化集合和测试结果:
public static void main(String[] args) {
user user = new user();
user.setAge(24);
user.setName("张三");
user user2 = new user();
user2.setAge(23);
user2.setName("李四");
List lists = new ArrayList<>();
lists.add(user);
lists.add(user2);
SerializableUtil.writeObject(lists);
List lists2 = new ArrayList<>();
lists2 = (List) SerializableUtil.readObject();
for(user value : lists2){
System.out.println(value.toString());
} }
结果:
序列化成功!
反序列化成功!
user [name=张三, age=24]
user [name=李四, age=23]
推荐阅读
- Java|Java基础——数组
- 人工智能|干货!人体姿态估计与运动预测
- java简介|Java是什么(Java能用来干什么?)
- Java|规范的打印日志
- Linux|109 个实用 shell 脚本
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- Spring注解驱动第十讲--@Autowired使用
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)