从ArrayList读取文件

时间:2013-11-29 20:15:39

标签: java arraylist fill file-handling

所以我有一个程序尝试读取文件以填充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();
}

2 个答案:

答案 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。