导读:序列化的 条件:.序列化必须要满足两个条件:.1. 该对象必须实现 java.io.Serializble 接口.2. 改对象的所有属性必须是可序列化的,若有属性不可序列化也须注明是短暂的.注:检验一个类是否可以被序列化,可以检验该类是否实现 Serializble 接口.序列化
序列化的 条件:
序列化必须要满足两个条件:
1. 该对象必须实现 java.io.Serializble 接口
2. 改对象的所有属性必须是可序列化的,若有属性不可序列化也须注明是短暂的
注:检验一个类是否可以被序列化,可以检验该类是否实现 Serializble 接口
序列化的定义:
把对象转换成可传输的字节序列的过程
反序列化的定义:
把字节序列转还原对象的过程
为什么要序列化?
最终目的地为了 跨平台存储 和 进行网络传输 而进行网络传输都是 IO 而进行IO所支持的还是 数组
序列化实例:
定义 student 类 并 实现了 java.io.Serializble 接口
public class studentDemo implements java.io.Serializable {
public String name;
public int phone;
public String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPhone() {
return phone;
}
public void setPhone(int phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
-—–序列化——
序列化成功之后会在当前路径创建 以 “张三”名字 为文件名的 .ser 的文件
序列化 需要用到 FileOutputStream() 文件输出流 和 ObjectOutputStream() 对象输出流
使用 文件输出流 创建 文件路径和名称 再通过 对象流的 writeObjec()方法 写入到系统中
每次使用完 IO流 一定要记得 关闭流 close() 方法
public class SerializeDemo {
public static void main(String[] args) {
studentDemo stu = new studentDemo();
stu.setName("张三");
stu.setPhone( 1233467733 );
stu.setAddress("江西");
try {
FileOutputStream fileOut = new FileOutputStream("student" + stu.name + ".ser"); // 创建 文件路径、文件名字
ObjectOutputStream out = new ObjectOutputStream(fileOut); // 创建 对象输出流系统
out.writeObject( stu ); // 写入需要的对象名
fileOut.close(); // 关闭文件流
out.close(); // 关闭对象输入流
System.out.println( "---序列化对象成功---" );
} catch ( IOException e) {
e.printStackTrace(); // 出现异常 初始化try
}
}
}
-——反序列化——-
反序列化是将 序列化的文件的内容读取出来的过程,和序列化是相对的
需要使用到 FileInputStream() 文件输入流 和 ObjectInputStream() 对象输入流 再用对象流的 readObject() 读取文件中的内容
public class UnSerializble {
public static void main(String[] args) {
String name = "张三";
try {
FileInputStream fileInt = new FileInputStream("student" + name + ".ser"); // 创建文件输入流
ObjectInputStream ois = new ObjectInputStream( fileInt ); // 创建对象输入流
studentDemo stu = (studentDemo) ois.readObject(); // 读取的对象强制成为 studentDemo 类
System.out.println("---反序列化内容---");
System.out.println( "name:" + stu.getName() );
System.out.println( "phone:" + stu.getPhone());
System.out.println( "address:" + stu.getAddress());
fileInt.close();
ois.close();
} catch (IOException e) {
throw new RuntimeException(e);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
}
上一篇:重磅更新!Sermant 1.2
下一篇:界面重建——Marching c