java 对象序列化

对象的序列化:把一个Object对象直接转化为字节流,然后把它写入到硬盘上的一个二进制文件或者通过网络传输,同样的,我们可以把这个二进制文件读入到内存,然后用来初始化一个对象,需要序列化得类对象,需要实现Serializable接口(空接口,与instance of连用,起到标志作用),不需要序列化得属性可以用transient修饰。

Class:
 ObjectOutputStream
 ObjectInputStream
 
 常用方法:
 readObject
 writeObject
 
 其实很容易想到这样一个问题,就是序列化得对象中有一个指针指向另一个对象时的操作,我们应当把指针指向的对象也一起序列化。另外在读取之后重组对象时,引用的内容也应该做同步的修改.

在C++的笔记中做了一个简单的实现程序,可以参考一下



一个基本的示例代码

class Student implements Serializable{
 
 public String name;
 
 transient public float score;
 
 public Student(String name,float score) {
  this.name = name;
  this.score = score;
 }
}

public class TestIO {
  
 public static void main(String[] args) {
  
  Student ss = new Student("liha", 95.5f);
  
  File file = new File("D:\\object.dat");
  
  try {
   ObjectOutputStream objOut = new ObjectOutputStream(new FileOutputStream(file));
   objOut.writeObject(ss);
   
   ObjectInputStream objIn = new ObjectInputStream(new FileInputStream(file));
   Student sbackStudent =  (Student)objIn.readObject();
   
   System.out.println(sbackStudent.name);
   System.out.println(sbackStudent.score);
   
   objOut.close();
   objIn.close();
   
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (ClassNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章