追加到现有对象文件
在 Java 中,ObjectOutputStream 允许您序列化对象并将其写入文件。但是,默认情况下,此流不支持将新对象附加到现有文件。本主题探讨将数据追加到现有 ObjectOutputStream 的解决方案。
要追加到现有文件,需要重写 ObjectOutputStream 的 writeStreamHeader() 方法以避免写入标头。这是一个执行此操作的自定义 AppendingObjectOutputStream 类:
public class AppendingObjectOutputStream extends ObjectOutputStream { public AppendingObjectOutputStream(OutputStream out) throws IOException { super(out); } @Override protected void writeStreamHeader() throws IOException { // do not write a header, but reset: reset(); } }
要使用此类将对象附加到现有文件,请在创建流之前检查该文件是否存在:
FileOutputStream fos = null; ObjectOutputStream out = null; File file = new File(preferences.getAppDataLocation() + "history"); if (file.exists()) { // Append to existing file fos = new FileOutputStream(file, true); out = new AppendingObjectOutputStream(fos); } else { // Create new file with header fos = new FileOutputStream(file); out = new ObjectOutputStream(fos); } // Append objects to the file out.writeObject(new Stuff(stuff)); out.close();
For读取附加对象,像往常一样使用 ObjectInputStream。从文件读取对象时不会再出现 StreamCorruptedException 异常。
以上是如何在 Java 中将对象追加到现有对象文件?的详细内容。更多信息请关注PHP中文网其他相关文章!