Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Menambahkan Objek pada Fail Objek Sedia Ada di Java?

Bagaimanakah Saya Boleh Menambahkan Objek pada Fail Objek Sedia Ada di Java?

Barbara Streisand
Barbara Streisandasal
2024-12-14 18:43:12760semak imbas

How Can I Append Objects to an Existing Object File in Java?

Melampirkan pada Fail Objek Sedia Ada

Dalam Java, ObjectOutputStream membenarkan anda untuk bersiri dan menulis objek pada fail. Walau bagaimanapun, secara lalai, strim ini tidak menyokong penambahan objek baharu pada fail sedia ada. Topik ini meneroka penyelesaian untuk menambahkan data pada ObjectOutputStream sedia ada.

Untuk menambah pada fail sedia ada, kaedah writeStreamHeader() ObjectOutputStream perlu ditindih untuk mengelakkan daripada menulis pengepala. Berikut ialah kelas AppendingObjectOutputStream tersuai yang melakukan perkara ini:

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();
  }

}

Untuk menggunakan kelas ini untuk menambahkan objek pada fail sedia ada, semak sama ada fail itu wujud sebelum mencipta strim:

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();

Untuk membaca objek yang dilampirkan, gunakan ObjectInputStream seperti biasa. Pengecualian StreamCorruptedException tidak akan berlaku lagi apabila membaca objek daripada fail.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menambahkan Objek pada Fail Objek Sedia Ada di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn