所以我有一个程序尝试读取文件以填充ArrayList,但在运行程序时不断收到此错误:
java.io.StreamCorruptedException: invalid stream header: 69652E77
代码:
File saveList = new File("PlayerDatabase.dat");
if(saveList.exists())
{
FileInputStream FileStream = new FileInputStream(saveList);
ObjectInputStream ObjStream = new ObjectInputStream(FileStream);
list = (List<Player>)ObjStream.readObject();
ObjStream.close();
}
答案 0 :(得分:1)
构造ObjectInputStream
时,构造函数使用流中的readStreamHeader()
读取前两个字节,期望它们是对象流中应存在的神奇值。
protected void readStreamHeader()
throws IOException, StreamCorruptedException
{
short s0 = bin.readShort();
short s1 = bin.readShort();
if (s0 != STREAM_MAGIC || s1 != STREAM_VERSION) {
throw new StreamCorruptedException(
String.format("invalid stream header: %04X%04X", s0, s1));
}
}
因此,如果它没有找到它们中的任何一个,它会抛出StreamCorruptedException
,这从上面的来源可以看出。确保文件的格式正确。
答案 1 :(得分:0)
似乎文件没有以正确的格式序列化,因此在反序列化时抛出StreamCorruptedException。