序列化的概念:
将一个对象存放到某种类型的永久存储器上称为保持。如果一个对象可以被存放到磁盘或磁带上,或者可以发送到另外一台机器并存放到存储器或磁盘上,那么这个对象就被称为可保持的。(在Java中,序列化、持久化、串行化是一个概念。)
下面我们来创建一个对象类来验证一下~
注意:
我们的对象类一定要实现 Serializable 接口(java.io.Serializable接口没有任何方法,它只作为一个“标记者”,用来表明实现了这个接口的类可以考虑串行化。类中没有实现Serializable的对象不能保存或恢复它们的状态) 不然程序就会报错~
这就是我们没有实现 Serializable 接口的情况~
package Z.LIO;
import java.io.Serializable;
//javabeam 必须实现序列化接口,bean对象才可以通过对象流进行输出
//序列化:对象输出流 ObjectOutputStream bean------>.txt
//反序列化:对象输入流 ObjectInputStream 读取序列化磁盘文件,.txt---->bean
public class Student01 implements Serializable{
String name;
String sex;
int age; //不想序列化,添加transient关键字让当前属性不进行序列化,确保数据的安全
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Student01() {
// TODO Auto-generated constructor stub
}
public Student01(String name, String sex, int age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
}
}
package Z.LIO;
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;
public class XuLieHua {
//序列化:对象输出流 ObjectOutputStream bean------>.txt
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
File f=new File("D:/代码/序列化.java");
//定义对象输出流,序列化bean---->.txt
ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream(f));
Student01 stu=new Student01("小冯", "女", 18);
out.writeObject(stu);
out.close();
//反序列化:对象输入流 ObjectInputStream 读取序列化磁盘文件,.txt---->bean
ObjectInputStream in=new ObjectInputStream(new FileInputStream(f));
Student01 s=(Student01)in.readObject();
System.out.println("名字:"+s.getName()+"\n性别:"+s.getSex()+"\n年龄:"+s.getAge());
in.close();//关闭
}
}
打印结果:
1.序列化:定义对象输出流,序列化bean---->.txt
2.反序列化:对象输入流 ObjectInputStream 读取序列化磁盘文件,.txt---->bean
3.javabeam 必须实现序列化接口,bean对象才可以通过对象流进行输出
4.如果属性不想序列化,添加transient关键字让当前属性不进行序列化,确保数据的安全
下面是一个对象流存储和读取一个对象的流程图:
最后别忘了去看看思维导图.
本文共 572 个字数,平均阅读时长 ≈ 2分钟
评论 (0)