您的位置:首页 > 移动开发 > Objective-C

24-IO流-56-IO流(ObjectInputStream-对象的反序列化)

2015-08-11 16:29 465 查看
package bean;

import java.io.Serializable;

public class Person implements Serializable{

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 Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Person() {
super();

}

}

==============================分割线======================================

/*
* 对于上一个视频产生的obj.Object文件,一般读取流只能读取信息,但是无法组合成对象,若需要重新读取出对象,那么就要用到
* 【反序列化】——ObjectInputStream类。
*
* 打开API,找到java.io包中的ObjectInputStream类,其内说明是:
* 		ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化。
* 即ObjectInputStream只能读取由ObjectOutputStream写入的对象,且按照顺序读取,即第一次readObject(),读取第一个对象,
* 第二次readObject(),读取第二个对象……
*/

package demo;

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

import bean.Person;

public class ObjectInputStreamDemo {

public static void main(String[] args) throws IOException, ClassNotFoundException {

readObject();
}

public static void readObject() throws IOException, ClassNotFoundException {

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.Object"));

//Object obj = ois.readObject();//ObjectInputStream类特有方法,用于读取对象
/**
* 调用readObject()方法需要抛出异常ClassNotFoundException,因为任何对象在内存中存在都必须依赖该对象所属的类文件,即
* 字节码文件,所以如果当前计算机中只有obj.Object文件,而没有Person.class文件,那么无法取出完整的对象(但是可以读取信息)。
*/
//一般都有Person.class文件,所以上一行代码没必要用Object接收,直接做向下强转
Person p = (Person)ois.readObject();
System.out.println(p.getName()+":"+p.getAge());

ois.close();
}

}
/*
* 【总结】
* ObjectOutputStream和ObjectInputStream就是将对象从内存中存储到硬盘中→持久化。注意对象所属类别需要实现Serializable
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: