【问题标题】:Appending Items to an object file将项目附加到目标文件
【发布时间】:2020-04-13 16:45:36
【问题描述】:

我知道有类似的问题,但当我尝试他们的方法时,他们都没有帮助我,但根本不起作用。我将不胜感激有关此主题的任何建议

我在将对象附加到对象文件时遇到问题。我正在尝试进行注册过程,并且正在使用此方法写入对象文件。

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】:

    替换

    FileOutputStream fileOut = new FileOutputStream(filepath);
    

    FileOutputStream fileOut = new FileOutputStream(filepath,true);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多