.java.io.StreamCorruptedException: invalid type code: AC解决办法

问题描述:

在向一个文件写入可序列化对象时,每次只想向文件的末尾添加一个可序列化的对象,于是使用了FileOutputStream(文件名,true)间接的构建了ObjectOutputStream流对象,在向外读数据的时候第一次运行的时候不会报错,在第二次就会报java.io.StreamCorruptedException: invalid type code: AC错误。

原因:

在一个文件都有一个文件的头部和文件体。由于对多次使用FileOutputStream(文件名,true)构建的ObjectOutputStream对象向同一个文件写数据,在每次些数据的时候他都会向这个文件末尾先写入header在写入你要写的对象数据,在读取的时候遇到这个在文件体中的header就会报错。导致读出时,出现streamcorrput异常。

解决办法:所以这里要判断是不是第一次写文件,若是则写入头部,否则不写入。

代码示例:

1.MyObjectOutputStream.java文件

import java.io.*;class MyObjectOutputStream extends ObjectOutputStream {
public MyObjectOutputStream() throws IOException {  super();
}public MyObjectOutputStream(OutputStream out) throws IOException {super(out);}
@Override protected void writeStreamHeader() throws IOException { return;}
}
2.ObjectSave.Java文件
import java.io.*;
import java.util.*;
public class ObjectSave { /**  * @param args *  * @throws IOException  *  * @throws IOException * @throws FileNotFoundException *  */ public static void main(String[] args) { ObjectOutputStream out = null; ObjectInputStream in = null;List<User> list = new ArrayList<User>();list.add(new User("admin", "admin", "123", 1)); list.add(new User("zhang", "zhang", "123", 0));String path = "d://abc"; try {      //判断文件大小并调用不同的方法 File file = new File(path); FileOutputStream fos = new FileOutputStream(file, true);     if(file.length()<1){           out = new ObjectOutputStream(fos);    }else{         out = new MyObjectOutputStream(fos);  }  //out = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(path,true))); //out.writeObject(Calendar.getInstance());  //判断文件大小并调用不同的方法  for (int i = 0; i < list.size(); i++) {   out.writeObject(list.get(i));  } } catch (Exception ex) { ex.printStackTrace(); } finally {   try {   out.close(); } catch (IOException e) { e.printStackTrace();  }  }  try { in = new ObjectInputStream(new BufferedInputStream(new FileInputStream(path)));//Calendar date = (Calendar) in.readObject();   //System.out.format("On %tA, %<tB %<te, %<tY:%n", date);  while (true) {  User user = (User) in.readObject(); System.out.println(user.getName());  }  } catch (EOFException e) { } catch (Exception ex) { ex.printStackTrace(); } finally {  try {   in.close();  } catch (IOException e) {  e.printStackTrace();   } } }} }}
}

java.io.StreamCorruptedException: invalid type code: AC解决办法相关推荐

  1. java.io.StreamCorruptedException: invalid type code: AC错误的解决方法

    问题描述: 在向一个文件写入可序列化对象时,每次只想向文件的末尾添加一个可序列化的对象,于是使用了FileOutputStream(文件名,true)间接的构建了ObjectOutputStream流 ...

  2. 解决java.io.StreamCorruptedException: invalid stream header: 6F617574 redis

    文章目录 报错全称 代码 疑似产生的原因 弯路.坑 分析 解决方案 报错全称 java.io.StreamCorruptedException: invalid stream header: 6F61 ...

  3. java.io.StreamCorruptedException: invalid stream header: 00000000

    Caused by: java.io.StreamCorruptedException: invalid stream header: 00000000at java.io.ObjectInputSt ...

  4. java.io.StreamCorruptedException: invalid stream header: EFBFBDEF 问题解决

    java.io.StreamCorruptedException: invalid stream header: EFBFBDEF 问题解决 参考文章: (1)java.io.StreamCorrup ...

  5. java.io.StreamCorruptedException: invalid stream header: 20200909

    为什么80%的码农都做不了架构师?>>>    在项目中使用ehcache 缓存,启动tomcat 突然报这个错误. 找了下原因是因为 一个tomcat 下 有两个应用,但是ehca ...

  6. invalid type code: AC异常

    今天在练习网络通信发现了这个错误 ..我是很迷茫啊 后来就是随意修改了一下  竟然不报错了.还是学习太少 错误代码(部分) public void run() {ObjectInputStream o ...

  7. 解决:java.io.IOException: invalid constant type: 15

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 启动  dubbo 服务报错: java.io.IOException: invalid const ...

  8. 运行报错:java.io.IOException: invalid constant type: 15

    为什么80%的码农都做不了架构师?>>>    jdk,tomcat更新到jdk1.8与 tomcat8 运行报错:java.io.IOException: invalid cons ...

  9. 鸿蒙应用开发DevEco运行时出现java.io.IOException: Invalid keystore format

    Failed to load signer "signer #1" java.io.IOException: Invalid keystore format 开发鸿蒙系统组件时新建 ...

最新文章

  1. 软件测试工程师怎样有效记录缺陷(Bug)功能测试面试经常问到
  2. 新口令范筹(Token Scope)- viewables:read
  3. mysql int 11 java_mysql中int(11)列的大小(以字节为单位)是多少?
  4. Java 12 switch表达式新特性(->,yield)
  5. Django学习(一)---基本配置及创建项目、应用
  6. oracle function 写查询语句_五个 SQL 查询性能测试题,只有 40% 及格率,你敢来挑战吗?...
  7. Diamond书写FPGA代码
  8. ecmobile php开发文档,ecmobile PHP接口说明文档之购物车(cart/create|list|detele|update)
  9. 在使用QueryRunner时候的异常问题Wrong number of parameters:excepted 0,was given 10 Query
  10. 【ARC112F】Die Siedler(根号分治)(bfs)
  11. 在就业创业中,您觉得最重要的是什么?
  12. der解码规则_[转] DER编码和ASN.1
  13. python tkinter界面 多进程启动scrapy爬取百度贴吧的回复,显示爬取进度,并可以搜索回帖人,指定时间生成词云图,用pyinstaller打包成exe(七)
  14. 新增数学与人工智能学部,考数据结构!齐鲁工业大学(山东省科学院)计算机考研...
  15. linux vim粘贴快捷键设置,vim粘贴模式快捷方式
  16. 个人支付收款接口现状剖析
  17. Unity3D——添加剑痕效果(PocketRPG Trail插件)
  18. 诺思格医药通过注册:年营收6亿 实控人武杰为美国籍
  19. CISSP认证每日知识点和常错题(12月16日)
  20. 3th Validate Binary Search Tree

热门文章

  1. ML.NET Cookbook:(12)我想看看模型的系数
  2. 为什么对gRPC做负载均衡会很棘手?
  3. BeetleX之HTTP网关部署
  4. 数据结构与算法专题——第十题 输入法跳不过的坎-伸展树
  5. Asp.Net Core多榜逆袭,这是.NET最好的时代!
  6. 7种方法帮助企业改进软件维护效率
  7. C#的未来:简化参数空值验证
  8. GitHub 2019年度报告,用户超4000万
  9. 《ASP.NET Core 高性能系列》致敬伟大的.NET斗士甲骨文
  10. 基于Kebernetes 构建.NET Core技术中台