java ObjectInputStream从文件中读取多个已经序列化的对象抛出java.io.StreamCorruptedException异常

每次从文件中读取都是只读文件中的第一序列化对象,已经确定文件中不止一个序列化对象,应为每次写入(appand)文件的大小都会变大。下面是写入序列化对象的代码Filenew... 每次从文件中读取都是只读文件中的第一序列化对象,已经确定文件中不止一个序列化对象,应为每次写入(appand)文件的大小都会变大。
下面是写入序列化对象的代码
File newFile = new File(path,fileName);
if(!newFile.exists()){
try {
newFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}

FileOutputStream fos = null;
try {
fos = new FileOutputStream(newFile,isAppend);
try {
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(obj);
oos.flush();
oos.close();
fos.close();

} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}

以下是读取序列化对象的代码:
public Object[] ReadFromFile(File file){
if(file == null){
return null;
}
ArrayList<Object> objs = new ArrayList<Object>();
try{
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
while(true){
Object obj=ois.readObject();
if(obj!=null){
objs.add(obj);
}
}
}
catch(Exception e){
e.printStackTrace();
System.out.println("文件信息读取完毕");
}
System.out.println(objs.size());
return objs.toArray();
}
展开
 我来答
匿名用户
2015-11-23
展开全部
读多了吧,写入时,先写一个对象的数量,,,,读的时候,先读数量,然后就知道一共一多少对象了。。。。。。。。
追问
我文件里的对象的数量是不确定的,我的想法是让它一直读,当没有了它就会报异常,这是我要的东西都得到了,异常捕获一下就可以了,可是我的问题是读了第一个后读第二个就直接报了java.io.StreamCorruptedException异常了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式