附加到ObjectOuputStream

时间:2018-04-19 21:00:04

标签: java objectinputstream objectoutputstream

我有一个名为" admin_product.bin"的文件。 我想将对象追加到文件中。 搜索后我发现了一个课程如下:

ObjectInputStream

上面的代码帮助我们将数据附加到我的文件中。但是,当我尝试使用java.io.StreamCorruptedException: invalid stream header: 79737200 读取文件时,它会抛出错误,如下所示:

public static void write_into_file() throws IOException {
        File file = null;
        file = new File("admin_product.bin");

        if(!file.exists()) {
            ObjectOutputStream os = null;
            try {
                os = new ObjectOutputStream(new FileOutputStream(file));
                os.writeObject(prd);
                System.out.println("Done!");
            } catch(Exception e) {
                System.out.println("Exception = " + e);
            } finally {
                if(os != null) {
                    os.close();
                }
            }

        }

        else {
            AppendingObjectOutputStream as = null;
            try {
                as = new AppendingObjectOutputStream(new FileOutputStream(file));
                as.writeObject(prd);
                System.out.println("Done!");
            } catch(Exception e) {
                System.out.println("Exception = " + e);
            } finally {
                if(as != null) {
                    as.close();
                }
            }
        }
    }

我的代码示例是:

int sum = IntStream.of(array).limit(4).sum();

有谁能告诉我哪里出错了?

我有以下问题的答案(但无法解决问题) -

1)Appending to a file

2)Appending class error

1 个答案:

答案 0 :(得分:1)

您没有附加到该文件。如果要附加到对象流,则还必须附加到该文件,而不是覆盖已存在的文件。

这将覆盖现有的文件内容:

new FileOutputStream(file)

追加使用

new FileOutputStream(file, true)

整行将是:

as = new AppendingObjectOutputStream(new FileOutputStream(file, true));