第十五天2

来源:互联网 发布:货币汇率软件 编辑:程序博客网 时间:2024/06/06 21:42


ObjectInputStream:反序列化流
   Object readObject() 从 ObjectInputStream 读取对象。 
 
         注意:如果一个类不实现Serializable接口无法把实例化,会报异常java.io.NotSerializableException
  类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。
 
  如何实现序列化

 让对象所属类的实现序列化接口。
 

package com.edu_07;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;


public class ObjectInputStreamDemo {
 public static void main(String[] args) throws Exception {
  //创建反序列化流对象
  ObjectInputStream ois = new ObjectInputStream(new FileInputStream("oos.txt"));
  
  //读取文件中存储的对象,以实现反序列化
  //readObject()
  Object object = ois.readObject();
  System.out.println(object);
  
  //关流
  ois.close();
  
 }

}

package com.edu_07;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
  对象的序列化和反序列化
  序列化流:把对象按照流一样的方式写到文件或者在网络中传输。 
 反序列化流:把文件或者网络中的流对象数据还原对象。
 
ObjectOutputStream:序列化流
  writeObject(Object obj) 将指定的对象写入 ObjectOutputStream。
public class ObjectOutputStreamDemo {
 public static void main(String[] args) throws IOException {
  //创建序列化流对象
  //public ObjectOutputStream(OutputStream out)
  ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("oos.txt"));
  
  //创建一个学生对象,将学生对象写入文件中
  Studnet s = new Studnet("刘德华", 50);
  oos.writeObject(s);
  // java.io.NotSerializableException
  //类通过实现 java.io.Serializable 接口以启用其序列化功能
  
  //关流
  oos.close();
  
 }

}
package com.edu_07;

import java.io.Serializable;

public class Studnet implements Serializable{
 //实现这个接口不需要实现任何方法,这个接口说白了就是仅仅给Student类,打上了一个可以被序列化的标示
 private String name;
 private int age;
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public Studnet(String name, int age) {
  super();
  this.name = name;
  this.age = age;
 }
 public Studnet() {
  super();
  // TODO Auto-generated constructor stub
 }
 @Override
 public String toString() {
  return "Studnet [name=" + name + ", age=" + age + "]";
 }

}

原创粉丝点击