Java反序列化示例
import java.io.*; import sp.Student; class DeSerial { public static void main (String [] args) { try { Student so=new Student (); DataInputStream dis=new DataInputStream (System.in); System.out.println ("ENTER FILE NAME TO READ"); String fname=dis.readLine (); FileInputStream fis=new FileInputStream (fname); ObjectInputStream ois=new ObjectInputStream (fis); Object obj=dis.readObject (); so=(Object) obj; System.out.println ("STUDENT NUMBER "+so.getStno ()); System.out.println ("STUDENT NAME "+so.getSname ()); System.out.println ("STUDENT MARKS "+so.getMarks ()); fis.close (); ois.close (); } catch (FileNotFoundException fnfe) { System.out.println ("FILE DOES NOT EXISTS"); } catch (Exception e) { System.out.println (e); } } };
序列化类型:
在Java中,我们有四种类型的序列化;它们是完整的序列化,选择性序列化,手动序列化和自动序列化。
- 完整的序列化是该类的所有数据成员参与序列化过程的序列化。
- 选择性序列化是类的少数类或者类的数据成员是参与序列化过程的数据成员。
为了避免从序列化过程中的变量,使变量声明为瞬态I.,瞬态变量从未参与序列化过程。
- 手动序列化是用户定义的类始终实现java.io.serializable接口的手动。
- 自动序列化是可序列化子类的子类对象参与序列化过程之一。
class RegStudent extends Student { ............. ............. };
去序列化是以对象形式从文件中减少数据的过程。
开发反序列化进程的步骤:
1.创建该类的对象是序列化的。
例如:
Student so=new Student ();
2.在FileInputStream类的帮助下选择文件名并将其打开到读取模式。
例如:
FileInputStream fis=new FileInputStream ("Student");
3.创建ObjectInputStream类的对象。
ObjectInputStream类的构造函数正在占用FileInputStream类的对象。
例如:
ObjectInputStream ois=new ObjectInputStream (fis);
- ObjectInputStream类包含以下方法,该方法将读取整个对象或者记录。
public Object readObject ();
例如:
Object obj=ois.readObject ();
5.将java.lang.Object类的对象键入一个适当的Serializable子类对象,用于调用序列化子类别中专门定义的Get方法。
例如:
So= (Student) obj;
6.应用一组用于打印可序列化子类对象的数据的Get方法。
例如:
int stno=so.getStno (); String sname=so.getSname (); flaot marks=so.getMarks ();
7.关闭链接的流。
例如:
fis.close (); ois.close ();
日期:2020-04-11 23:04:26 来源:oir作者:oir