java.io.StreamCorruptedException: invalid type code: AC
来源:互联网 发布:设计二维码的软件 编辑:程序博客网 时间:2024/05/27 08:14
在使用ObjectInputStream和ObjectOutputStream的时候,可能会遇到这个错误,我们先看一下这个错误是怎么发生的:
package org.ygy.oos;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;public class FileUtil {public static final String FILE_PATH = "data.txt";/** * 将一个Person对象写入文件 * @param p */public static void writeOne(Person p) {ObjectOutputStream oos = null;try {oos = new ObjectOutputStream(new FileOutputStream(FILE_PATH , true));oos.writeObject(p);oos.flush();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {if(oos != null) {oos.close();oos = null;}} catch (IOException e) {e.printStackTrace();}}}/** * 读取文件,并输出保存的对象 */public static void read() {ObjectInputStream ois = null;try {ois = new ObjectInputStream(new FileInputStream("data.txt"));Person p = (Person) ois.readObject();System.out.println("p->" + p);Person p2 = (Person) ois.readObject();System.out.println("p2->" + p2);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();} finally {try {if(ois != null) {ois.close();ois = null;}} catch (IOException e) {e.printStackTrace();}}}public static void main(String[] args) {writeOne(new Person(1002 , "索隆"));read();}}
其实,就是使用ObjectoutputStream采用追加方式写入对象的时候,出现的问题。
1.当你在文件中只写入一个对象的时候,也只读取一次的话,是很正常的。
2.当你在文件中写入一个对象,又采用追加的方式写入第二个对象的时候,读取两次,并输出对象,就会发生错误:
p->Person [id=1001, name=路飞]java.io.StreamCorruptedException: invalid type code: ACat java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1374)at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)at org.ygy.oos.FileUtil.read(FileUtil.java:49)at org.ygy.oos.FileUtil.main(FileUtil.java:72)
3.如果你的文件只打开一次,写入两个对象,读取两次,也是没有问题的。
经过测试,会发现,文件打开一次,正确;文件打开两次,错误。
用这两种方法生成的文件,比较之后,他们的内容是不一样的,猜测:ObjectOutputStream在文件关闭的时候,会写入一些东西。
在网上看到一篇博客,讲的不错,看一下:
http://halzhang.iteye.com/blog/267917
- java.io.StreamCorruptedException: invalid type code: AC
- java.io.StreamCorruptedException: invalid type code: AC
- java.io.StreamCorruptedException: invalid type code: AC异常
- .java.io.StreamCorruptedException: invalid type code: AC解决办法
- .java.io.StreamCorruptedException: invalid type code: AC解决办法
- java.io.StreamCorruptedException: invalid type code: AC解决办法
- java.io.StreamCorruptedException: invalid type code: AC解决办法
- java.io.StreamCorruptedException: invalid type code: AC错误的解决方法
- java.io.StreamCorruptedException: invalid type code: AC解决办法
- java.io.StreamCorruptedException: invalid type code: AC问题解决
- java.io.StreamCorruptedException: invalid type code: AC异常和对象流锁机制问题
- 多次创建object 写入对象文件中.java.io.StreamCorruptedException: invalid type code: AC解决办法
- 关于StreamCorruptedException: invalid type code: AC 异常
- tomcat8.0 启动报错 java.io.StreamCorruptedException: invalid type code: 3F
- 存储两次序列化对象,读取报错问题 java.io.StreamCorruptedException: invalid type code: A
- java.io.StreamCorruptedException: invalid stream header: EFBFBDEF
- java.io.StreamCorruptedException: invalid stream header: ABACED00
- java.io.StreamCorruptedException: invalid stream header: 异常
- Java中sleep()与wait()的区别
- setsockopt :SO_LINGER 选项设置
- axWindowsMediaPlayer的播放状态
- Linux内核线程编程方法
- android:layout_gravity 和 android:gravity 的区别
- java.io.StreamCorruptedException: invalid type code: AC
- Java 下载网络图片
- JSP Servlet编码问题总结
- WindowManager.LayoutParams详解
- ABAP--如何获取ABAP的程序事件顺序的调用堆栈 .
- 雅虎面试题-你真的了解HTML吗?
- Cadence 图形界面终于可以显示了
- 浏览器插件总结
- Trie介绍,来自刘汝佳老师的书加上自己的一点东西