【问题标题】:Exception in thread "main" java.io.StreamCorruptedException: invalid type code: AC [duplicate]线程“main”java.io.StreamCorruptedException中的异常:无效类型代码:AC [重复]
【发布时间】:2015-03-27 00:15:44
【问题描述】:

只是想读一个数字。我正在实施Serializable,而我的main() 抛出错误:

线程“main”java.io.StreamCorruptedException 中的异常:无效类型代码:AC 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1379) 在 java.io.ObjectInputStream.readObject(ObjectInputStream.java:371) 在 Driver.main(Driver.java:28)

代码如下:

try ( ObjectOutputStream output = new ObjectOutputStream(new 
           FileOutputStream("myFile.dat", true));){ 
           Integer a = 0;   
           output.writeObject(a); 
} 
finally{}; 
try(ObjectInputStream input = new ObjectInputStream(new 
          FileInputStream("myFile.dat")); ){ 
           Integer newNumber = 0; 
           newNumber =  input.readObject(); 
           ++newNumber; 
           System.out.println("This program has been executed " + newNumber
            + " times.");   
          input.close();
}

【问题讨论】:

  • 这个文件中存储了什么?

标签: java exception eof objectinputstream eofexception


【解决方案1】:

文件是空的,或者文件头后面的实际数据少于四个字节(如果有的话)。

【讨论】:

  • 所以你没有正确写入文件。除非您使用ObjectOutputStream.writeObject()/writeUnshared() 编写它,并且您传递的对象是Integer,否则您的读取代码将无法按预期工作。使用writeInt()readInt(). 会更重要
  • 所以你没有按照我说的去做。您不能混合使用 writeInt()readObject(), 或相反。注意你不能追加到ObjectOutputStream.写的文件
  • 什么也没告诉我。始终需要堆栈跟踪和完整的异常消息。
  • 你还没有按照我描述的方式修复它。请再次阅读我在这里写的所有内容。
猜你喜欢
  • 2023-04-07
  • 1970-01-01
  • 2021-02-08
  • 1970-01-01
  • 2011-01-24
相关资源
最近更新 更多