将项目追加到目标文件中

问题描述 投票:0回答:1

我知道也有类似的问题,但是当我尝试使用它们的方法时,没有一个问题对我有帮助,这简直是行不通的。如果您对此主题有任何建议,我将不胜感激

我在将对象附加到对象文件时遇到麻烦。我正在尝试执行注册过程,并且正在使用此方法写入目标文件。

public void WriteObjectToFile(Object serObj, String filepath) { 

    try {
        boolean exists;
        if(!(new File(filepath).isFile())){
            exists = false;
        }else{
            exists = true;
        }
        FileOutputStream fileOut = new FileOutputStream(filepath);
        ObjectOutputStream objectOut = null;
        if(!exists){
            System.out.println("Normal");
            objectOut = new ObjectOutputStream(fileOut);
        }else{
            System.out.println("Custom");
            objectOut = new AppendingObjectOutputStream(fileOut);
        }
        objectOut.writeObject(serObj);
        objectOut.close();
        System.out.println("The Object  was succesfully written to a file");

    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

自定义AppendingObjectOutputStreamClass看起来像这样:

import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;

public class AppendingObjectOutputStream extends ObjectOutputStream {

public AppendingObjectOutputStream(OutputStream out) throws IOException {
    super(out);
}

@Override
protected void writeStreamHeader() throws IOException {
    reset();
}

}

if语句检查文件是否存在。如果不是,则表示它是第一个对象,因此我使用普通的ObjectOutputStream。如果不是第一个,那么我将使用自定义的AppendingObjectOutputStream,但这仍然为我提供了StreamCorruptedErrorException。

对此的任何帮助将不胜感激。

java objectoutputstream object-files
1个回答
0
投票

替换

FileOutputStream fileOut = new FileOutputStream(filepath);

with

FileOutputStream fileOut = new FileOutputStream(filepath,true);

检查https://docs.oracle.com/javase/9/docs/api/java/io/FileOutputStream.html#FileOutputStream-java.io.File-boolean-了解更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.