import java.io.Serializable;
import java.io.ObjectOutputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.FileInputStream;
//序列化类
class Student implements Serializable{
private String name;
private int age;
public Student(String name,int age){
this.name=name;
this.age=age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
public class TeseSeriable{
public static void main(String []args) throws Exception{
TeseSeriable test=new TeseSeriable();
//创建一个文件,以追加的方式向文件里写10个对象
for(int i=0;i<10;i++){
Student stu=new Student("jack"+i,19+i);
test.writeToObject(stu,"test.txt");
}
Thread.sleep(1000);
//一次性将10个对象反序列化出来,此方法出错.
test.ListObject("test.txt");
}
//序化列方法
public void writeToObject(Object obj,String fileName){
try{
ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream(fileName,true));
out.writeObject(obj);
out.flush();
out.close();
}
catch(Exception ex){
ex.printStackTrace();
}
}
//反序列化方法
public Object readToObject(String fileName){
Object obj=null;
ObjectInputStream in=null;
try{
in=new ObjectInputStream(new FileInputStream(fileName));
obj=in.readObject();
}
catch(Exception ex){
ex.printStackTrace();
}
finally{
try{
in.close();
}
catch(Exception e){}
}
return obj;
}
//列出所有对象
public void ListObject(String fileName){
try{
ObjectInputStream in=new ObjectInputStream(new FileInputStream(fileName));
//为什么读取第二个地象就报错呢?********************************************
for(int j=0;j<10;j++){
Student student=(Student)in.readObject();
System.out.println(student.getName());
System.out.println(student.getAge());
}
in.close();
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
============================
我想实现的目地是,将10个对象写入到文件里,然后依次读出.
现在写入到文件没有错,但在读到取时却只读到第一个对象,读第二个对象时就报错:
java.io.StreamCorruptedException
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1301)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
at TeseSeriable.ListObject(TeseSeriable.java:76)
at TeseSeriable.main(TeseSeriable.java:38)
有兴趣的朋友,可以看看.
分享到:
相关推荐
比如下面的JS对象 var user=new Object(); user.name='吕洞宾'; user.friends=[{name:"铁拐李",sex:"男",friend:user},{name:"何仙姑",sex:"女",friend:user}]; 一般的解析工具都会出错 详细信息请参观 ...
最近阅读Serializable接口和Externalizable接口的源码,并结合了一些资料,对面试过程中与序列...如:RMI (远程方法调用),传入的参数或返回的对象都是可序列化的,否则会出错。所有必须保存到磁盘的java对象都必须是可
本文实例讲述了jQuery实现form表单序列化转换为json对象功能。分享给大家供大家参考,具体如下: 做web前端开发时,需要ajax提交大量表单数据,如果一个个form字段拼接很费劲也容易出错,下面方法可解决这个问题 &...
主驱动程序接受用户指定的命令,并将其包装在用户指定的小工具链中,然后将这些对象序列化为stdout。 当在类路径上具有必需小工具的应用程序不安全地反序列化此数据时,该链将自动被调用并导致命令在应用程序主机上...
主要介绍了JSON序列化Redis读取出错问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
将对象序列化进/出某些存储需要使用反射、手动编写样板代码或使用代码生成。 我们想要在 JVM 之外安全、快速和可移植的序列化,所以反射是不可能的。 我们不想手动编写样板。 它很容易出错。 所以我们选择代码生成。...
SharedPreferenc保存实体对象,方便快捷。不用像创建数据库那样繁琐,容易出错。通过Gson将对象序列化为字符串类型,然后保存到文件中,需要用的时候再反序列化得到对象。
之前写了个User类(实现了Serializable接口),类变量里有Bitmap类型的头像图片,Bitmap导致序列化不成功,报 “android.graphics.Bitmap”相关错误 解决方法之一:把Bitmap对象替换成byte数组来表示间接表示图片,在...
修复了负数解析是出现的“解析数值出错”错误。 优化了多线程的支持。去除了所有“打开内存文件”改用 快速字节集对象。 2.2 加入二次寻址机制。 当存在 路径 和 句柄 参数时,如果 句柄 大于 0,而且路径也存在时...
jijo:双向JSON序列化 设计目标 显式–解耦类型和编码器/解码器(与Aeson中自动派生的实例不同)。 双向性–使用相同的定义进行编码和解码,以防止在定义的一侧更新而另一侧没有更新时出错。 完整性–收集尽可能多...
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。 17、...
对开发者来说,本地IDEA调试Flink、Spark任务不涉及对象的序列化及反序列化,任务在本地调试通过后,执行在分布式环境下也可能会出错。 而将任务提交到集群进行调试还要走那些繁琐的流程太影响效率了。 因此,为方便...
2.4.4 转义序列 52 2.5 C++中的计算 54 2.5.1 赋值语句 54 2.5.2 算术运算 55 2.5.3 计算余数 59 2.5.4 修改变量 60 2.5.5 增量和减量运算符 60 2.5.6 计算的顺序 63 2.6 类型转换和类型强制转换 64 2.6.1...
而比较用户对象功能则允许您对所选对象进行比较,将不同点可视化,并运行或保存应用必要变动的SQL脚本。 导出用户对象 该工具可以导出用户所选对象的DDL(数据定义语言)语句。您可以方便的为其他用户重新创建对象...
非PL/SQL对象——不使用任何SQL,您就可以对表格、序列、符号、库、目录、工作、队列、用户和角色进行浏览、创建和修改行为。PL/SQL Developer提供了一个简单易用的窗体,只要将信息输入其中,PL/SQL Developer就...
非PL/SQL对象——不使用任何SQL,您就可以对表格、序列、符号、库、目录、工作、队列、用户和角色进行浏览、创建和修改行为。PL/SQL Developer提供了一个简单易用的窗体,只要将信息输入其中,PL/SQL Developer就...
非PL/SQL对象——不使用任何SQL,您就可以对表格、序列、符号、库、目录、工作、队列、用户和角色进行浏览、创建和修改行为。PL/SQL Developer提供了一个简单易用的窗体,只要将信息输入其中,PL/SQL Developer就...
非PL/SQL对象——不使用任何SQL,您就可以对表格、序列、符号、库、目录、工作、队列、用户和角色进行浏览、创建和修改行为。PL/SQL Developer提供了一个简单易用的窗体,只要将信息输入其中,PL/SQL Developer就将...
非PL/SQL对象——不使用任何SQL,您就可以对表格、序列、符号、库、目录、工作、队列、用户和角色进行浏览、创建和修改行为。PL/SQL Developer提供了一个简单易用的窗体,只要将信息输入其中,PL/SQL Developer就...
非PL/SQL对象——不使用任何SQL,您就可以对表格、序列、符号、库、目录、工作、队列、用户和角色进行浏览、创建和修改行为。PL/SQL Developer提供了一个简单易用的窗体,只要将信息输入其中,PL/SQL Developer就...