Java怎样判断一个文件是不是保存了对象的序列化信息?

Qinghua·xie 2021-01-09 02:06:23
程序目的:检索一个文件夹下的文件是不是存储了某个类对象的序列化信息;
遇到的问题:用ObjectInputStream(InputStream is)方法读取到不含序列化信息文件的时候 程序抛出了StreamCorruptedException异常
希望得到的帮助:怎样判断一个文件中是不是存储了序列化信息?
StudentSerialization stuseria = new StudentSerialization();
ObjectInputStream ois = null;
try {
File file = new File("D:\\Ideal\\practice\\");
stuseria.searchFile(file); //将file文件夹下所有的文件都添加到stuseria.filelist集合中
if (stuseria.filelist.size()!=0){
int num = 0; //查找到的学生对象数量
for (File f:stuseria.filelist){
ois = new ObjectInputStream(new FileInputStream(f));//抛出异常的地方
Object o;
if ((o=ois.readObject()) instanceof Student){
//省略对获取的对象进行相关处理代码
}
}
}
//省略相关catch/finally以及关闭流代码块
...全文
884 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
鸡窝里的毛 2021-01-09
  • 打赏
  • 举报
回复
文件头里有标识的。

Java序列化 - 二进制格式详解_夫礼者的专栏-CSDN博客_java 二进制序列化
https://blog.csdn.net/lqzkcx3/article/details/79463450
Qinghua·xie 2021-01-09
  • 打赏
  • 举报
回复
抛出异常的地方加一个try-catch; catch到StreamCorruptedException就continue进入下一次循环; 问题解决了 修改的代码如下:
 for (File f:stuseria.filelist){
                    try {
                        ois = new ObjectInputStream(new FileInputStream(f));//读取到存储非序列化文件时,会抛出StreamCorruptedException异常
                    }catch (StreamCorruptedException e){
                        continue;
                    }

51,412

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧