Melampirkan pada ObjectOutputStream: Penyelesaian
Di Java, menambahkan pada ObjectOutputStream tidak disokong secara semula jadi. Percubaan untuk menambah pada fail sedia ada menggunakan ObjectOutputStream standard akan menghasilkan StreamCorruptedException apabila membaca.
Untuk mengatasi had ini, seseorang boleh mensubkelaskan ObjectOutputStream dan mengatasi kaedah writeStreamHeadernya. WriteStreamHeader yang diubah suai seharusnya tidak menulis pengepala tetapi sebaliknya menetapkan semula strim semasa menulis objek awal.
Kod berikut menunjukkan penciptaan kelas 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: this.reset(); } }
Untuk menggunakan kelas ini, tentukan sama ada fail sejarah sasaran wujud. Jika ia berlaku, nyatakan AppendingObjectOutputStream untuk menambah data tanpa menulis pengepala. Jika fail itu tidak wujud, nyatakan ObjectOutputStream standard untuk menulis pengepala.
// Check if history file exists if (fileExists) { // Appendable stream ObjectOutputStream out = new AppendingObjectOutputStream(new FileOutputStream(filePath, true)); } else { // Standard stream ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filePath)); }
Dengan menggunakan AppendingObjectOutputStream, seseorang boleh berjaya menambahkan objek pada fail sejarah sedia ada, memastikan semua objek bertulis boleh dibaca mengikut susunan yang betul.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menambahkan Objek pada ObjectOutputStream Sedia Ada di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!