我知道也有类似的问题,但是当我尝试使用它们的方法时,没有一个问题对我有帮助,这简直是行不通的。如果您对此主题有任何建议,我将不胜感激
我在将对象附加到对象文件时遇到麻烦。我正在尝试执行注册过程,并且正在使用此方法写入目标文件。
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。
对此的任何帮助将不胜感激。
替换
FileOutputStream fileOut = new FileOutputStream(filepath);
with
FileOutputStream fileOut = new FileOutputStream(filepath,true);