【问题标题】:java.io.StreamCorruptedException: invalid stream header: 00000001 Simple Projectjava.io.StreamCorruptedException:无效的流标头:00000001 简单项目
【发布时间】:2014-04-25 21:47:59
【问题描述】:

我的问题是,当我尝试反序列化信息时,我的项目(其中项目被序列化到文件夹然后反序列化的简单清单)抛出“java.io.StreamCorruptedException:无效流标头:00000001”。我以前没有问题;但是,当我使用 Finder(mac) 手动删除其中一个序列化文件时,就会抛出异常。 我的反序列化代码是:

private void compileInventory() {
    //run through text file and create inventory 

    Inv = new <Item>ArrayList();
    File f = new File(loc);
    File[] list = f.listFiles();
    Inv.clear();
    if (f.exists()) {
        for (File n : list) {

                try {
                    FileInputStream fileIn = new FileInputStream(n.getAbsolutePath());
                    ObjectInputStream in = new ObjectInputStream(fileIn);
                    Inv.add((Item) in.readObject());
                    in.close();
                    fileIn.close();
                } catch (IOException i) {
                    i.printStackTrace();
                    return;
                } catch (ClassNotFoundException c) {
                    System.out.println("Item class not found");
                    c.printStackTrace();
                    return;
                }
            }

    }
}

【问题讨论】:

    标签: java file serialization io


    【解决方案1】:

    会不会是您的 Mac 在该文件夹中创建了一些系统文件,而现在您的应用正试图取消实现它们?

    【讨论】:

    • 是的,我打赌就是这样。在我的 Mac 上,我在许多目录中有名为 .DS_Store 的文件,我检查的前四个字节是 00 00 00 01。
    猜你喜欢
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多