JDK6.0学习笔记(十四)对象序列化

来源:互联网 发布:中国snapchat类似软件 编辑:程序博客网 时间:2024/05/01 18:53
  1. /**
  2.  * 对象输入输出流ObjectOutputStream和ObjectInputStream,可以直接把Java对象作为
  3.  * 存储,传输的对象写入文件,在网络上传输,避免了存储字节的操作
  4.  * 
  5.  * 对象序列化是一种使Java对象能够被存储和传输的机制
  6.  * 解决"包含对象引用"情况下对象的存储和传输,避免重复写入
  7.  * 对象序列化,利用transient改变默认的序列化机制 
  8.  * */
  9. import java.io.ObjectInputStream;
  10. import java.io.ObjectOutputStream;
  11. import java.io.File;
  12. import java.io.FileInputStream;
  13. import java.io.FileOutputStream;
  14. import java.io.IOException;
  15. public class TestSerializable {
  16.     public static void main(String[] args) throws IOException,
  17.             ClassNotFoundException {
  18.         File myObjectFile = new File("myobject");
  19.         ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(
  20.                 myObjectFile));
  21.         MyObject myObject = new MyObject(0"Tom");
  22.         oos.writeObject(myObject);
  23.         oos.close();
  24.         ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
  25.                 myObjectFile));
  26.         MyObject myObject1 = (MyObject) ois.readObject();
  27.         System.out.println("no=" + myObject1.getNo() + ";name="+ myObject1.getName());
  28.         ois.close();
  29.     }
  30. }
  1. /**
  2.  * 没有实现Serializable接口的类的实例,不能机基于对象输入输出流进行存取
  3.  * 否则抛出java.io.NotSerializableException异常
  4.  * Java对象及起属性(简单类型除外)必须实现Serializable接口,这个对象才能序列化
  5.  * */
  6. import java.io.Serializable;
  7. import java.io.ObjectInputStream;
  8. import java.io.ObjectOutputStream;
  9. import java.io.IOException;
  10. public class MyObject implements Serializable {//Serializable接口没有定义任何方法
  11.     private int no = 0;
  12.     transient private String name = null;//被对象输出流读出,在字符串后面加...
  13.     public MyObject(int no, String name) {
  14.         this.no = no;
  15.         this.name = name;
  16.     }
  17.     public void setNo(int no) {
  18.         this.no = no;
  19.     }
  20.     public int getNo() {
  21.         return this.no;
  22.     }
  23.     public void setName(String name) {
  24.         this.name = name;
  25.     }
  26.     public String getName() {
  27.         return this.name;
  28.     }
  29.     private void writeObject(ObjectOutputStream out) throws IOException {
  30.         out.defaultWriteObject();
  31.         out.writeObject(this.name);
  32.     }
  33.     private void readObject(ObjectInputStream in) throws IOException,
  34.             ClassNotFoundException {
  35.         in.defaultReadObject();
  36.         this.name = (String) in.readObject() + "...";
  37.     }
  38. }

原创粉丝点击