将项目附加到目标文件
Appending Items to an object file
我知道有类似的问题,但其中 none 对我有帮助,因为我尝试了他们的方法,但根本不起作用。我将不胜感激有关此主题的任何建议
我在将对象附加到对象文件时遇到问题。我正在尝试执行注册过程,并且正在使用此方法写入对象文件。
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);
与
FileOutputStream fileOut = new FileOutputStream(filepath,true);
我知道有类似的问题,但其中 none 对我有帮助,因为我尝试了他们的方法,但根本不起作用。我将不胜感激有关此主题的任何建议
我在将对象附加到对象文件时遇到问题。我正在尝试执行注册过程,并且正在使用此方法写入对象文件。
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);
与
FileOutputStream fileOut = new FileOutputStream(filepath,true);