java object取数据_java使用ObjectInputStream从文件中读取对象

这段代码展示了如何使用Java的ObjectInputStream从文件中读取实现了Serializable接口的对象。当readObject()方法无法读取到正确对象时,它会抛出异常而非返回null。
摘要由CSDN通过智能技术生成

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

Java将对象保存到文件中/从文件中读取对象

1.保存对象到文件中 Java语言只能将实现了Serializable接口的类的对象保存到文件中,利用如下方法即可: public static void writeObjectToFile(Obje ...

Java对文件中的对象进行存取

1.保存对象到文件中 Java语言只能将实现了Serializable接口的类的对象保存到文件中,利用如下方法即可: public static void writeObjectToFile(Obje ...

归纳从文件中读取数据的六种方法-JAVA IO基础总结第2篇

在上一篇文章中,我为大家介绍了<5种创建文件并写入文件数据的方法>,本节我们为大家来介绍6种从文件中读取数据的方法. 另外为了方便大家理解,我为这一篇文章录制了对应的视频:总结java从文 ...

java&colon;从指定问价中读取80个字节写入指定文件中

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class F ...

java从文件中读取数据然后插入到数据库表中

实习工作中,完成了领导交给的任务,将搜集到的数据插入到数据库中,代码片段如下: static Connection getConnection() throws SQLException, IOExc ...

Servlet从本地文件中读取图片,并显示在页面中

import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpSer ...

JDBC Java 程序从 MySQL 数据库中读取数据,并备份到 xml 文档中

MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 程序从 MySQL 数据库中读取数据,并 ...

【Python】从文件中读取数据

从文件中读取数据 1.1 读取整个文件 要读取文件,需要一个包含几行文本的文件(文件PI_DESC.txt与file_reader.py在同一目录下) PI_DESC.txt 3.1415926535 ...

Python自动化测试框架——数据驱动(从文件中读取)

学过编程的伙伴们都知道,数据不仅可以从代码中读取,还可以从文件中读取. 今天小编就简要的介绍一下从文件中读取数据,并应用到自动化测试中方法. 先来展示下接下来将要用到的文件在项目中的结构 从txt文件 ...

随机推荐

ORACLE应用调优:请避免SQL做大量循环逻辑处理

前阵子遇到一个案例:一个同事说以前一个运行很正常的包,突然间比以前慢了很多,执行时间非常长,晚上的作业调用这个包跑了几个小时也没有跑出数据.于是我在跟踪.优化过程中定位到包中一个存储过程的一段SQL, ...

linux学习之用户管理

用户管理是在root用户下进行相关操作的 1.配置文件路径:         保存用户信息的文件:/etc/passwd         保存密码的文件:/etc/shadow         保存用 ...

关于promise对象的笔记

1.promise对象是ECMAScript6的新特性,很多新的JS框架都有它的实现和应用 2.promise常用于异步调用(ajax)中 3.promise主要用于解决回调函数层层嵌套的写法 4.要 ...

android中Invalidate和postInvalidate的区别

Android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用. Android提供了Inva ...

Http响应报文

HTTP响应也由三个部分组成,分别是:状态行.消息报头.响应正文. 其中,HTTP-Version表示服务器HTTP协议的版本:Status-Code表示服务器发回的响应状态代码:Reason-Phr ...

BZOJ 3143&colon; &lbrack;Hnoi2013&rsqb;游走 &lbrack;概率DP 高斯消元&rsqb;

一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边的编号的分 ...

Dapper 链式查询 扩展

Dapper 链式查询扩展 DapperSqlMaker   Github地址:https://github.com/mumumutou/DapperSqlMaker  欢迎大佬加入 Demo: 查询 ...

get方法与post方法的区别与js获取url参数的方式

1.get方法与post方法的区别: 区别一:get重点在从服务器上获取资源,post重点在向服务器发送数据:区别二:get传输数据是通过URL请求,以field(字段)= value的形式,置于UR ...

20165223 week1测试查漏补缺

week1查漏补缺 经过第一周的学习后,在蓝墨云班课上做了一套31道题的小测试,下面是对测试题中遇到的错误的分析和总结: 一.背记题 不属于Java后继技术的是? Ptyhon Java后继技术有? ...

Solr4&period;0&plus;IKAnalyzer中文分词安装&lpar;转&rpar;

有近2年没接触Solr跟Lucene了,这2年自己跟solr/lucene都发生了很多变化.不过有种疏途同归的感觉,那就是都向分布式/云和监控靠了.2年前接触了solrcloud,那时大概玩了一周.那 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值