java调用object_java使用ObjectInputStream从文件中读取对象

import java.io.EOFException;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.ObjectInputStream;

public class Main {

/**

*ObjectInputStream 使用示例

*/

public void readPersons(String filename) {

ObjectInputStream inputStream = null;

try {

//构造ObjectInputStream对象

inputStream = new ObjectInputStream(new FileInputStream(filename));

Object obj = null;

while ((obj = inputStream.readObject()) != null) {

if (obj instanceof Person) {

System.out.println(((Person)obj).toString());

}

}

} catch (EOFException ex) { //在读取到文件结束时触发此异常

System.out.println("End of file reached.");

} catch (ClassNotFoundException ex) {

ex.printStackTrace();

} catch (FileNotFoundException ex) {

ex.printStackTrace();

} catch (IOException ex) {

ex.printStackTrace();

} finally {

//Close the ObjectInputStream

try {

if (inputStream != null) {

inputStream.close();

}

} catch (IOException ex) {

ex.printStackTrace();

}

}

}

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

new Main().readPersons("myFile.txt");

}

}

readObject方法:

public final Object readObject() throws IOException,ClassNotFoundException

从 ObjectInputStream 读取对象。对象的类、类的签名和类及所有其超类型的非瞬态和非静态字段的值都将被读取。可以使用 writeObject 和 readObject 方法为类重写默认的反序列化。由此对象引用的对象是可传递读取的,这样 readObject 即可重新构造这些对象的完全等价的图形。

通过完全还原根对象的所有字段及其引用的对象来完全还原根对象。此时,对象验证回调的执行顺序基于其注册优先级。回调在其个别还原时由对象(按照 readObject 特定方法)进行注册。 当 InputStream 中出现问题或者遇到不应反序列化的类时,将抛出异常。所有异常对于 InputStream 而言都是致命的,将使其处于不确定状态;这将持续到调用方忽略或恢复流状态。

指定者:

接口 ObjectInput 中的 readObject

返回:

从流读取的对象

抛出:

ClassNotFoundException - 找不到序列化对象的类。

InvalidClassException - 序列化使用的类出了问题。

StreamCorruptedException - 流中的控制信息不一致。

OptionalDataException - 在流中而不是对象中找到了基本数据。

IOException - 任何常规的输入/输出相关的异常。这是readObject的全部描述,读不到正确的Object信息就报错 不会返回null来提示你

参考:http://www.debugease.com/j2ee/171334.html

原文:http://www.cnblogs.com/Claire6649/p/5872910.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值