1 Kod berikut mensiri fail 2.log dan simpan ke 2.txt
FileInputStream fin = new FileInputStream("D:\2.log");
FileOutputStream out1 = new FileOutputStream(new File("D:\2.txt"));
// ObjectOutputStream oop1 = new ObjectOutputStream(out1);
byte[] datas = new byte[1024];
int j = 0;
while ((j = fin.read(datas)) > 0) {
out1.write(datas);
fin.read(datas);
}
fin.close();
out1.close();
Deserialisasi:
Gunakan ObjectInputStream()
FileInputStream fis = new FileInputStream("D:/2.txt");
ObjectInputStream oin = new ObjectInputStream(fis);
oin.readObjectr("utama);
" java.io.StreamCorruptedException: pengepala strim tidak sah: 3139322E
Bagaimana untuk menanganinya?
Jika fail besar, bagaimana untuk menambah cache semasa membaca? Saya harap Daniel dapat menyedarkan saya, xiexie
Masalah anda adalah kerana kandungan yang dibaca oleh ObjectInputStream mesti dihasilkan dengan menulis oleh ObjectOutputStream. Kandungan fail mesti mematuhi keperluan spesifikasi siri Java. Tatasusunan bait yang anda cipta sendiri tidak boleh digunakan.
protobuf ialah kaedah yang fleksibel, cekap dan automatik untuk mensiri data berstruktur, sama seperti XML, tetapi ia lebih kecil, lebih pantas dan lebih ringkas. Anda boleh menentukan struktur data anda sendiri dan kemudian menggunakan kod yang dijana oleh penjana kod untuk membaca dan menulis struktur data ini. Anda juga boleh mengemas kini struktur data tanpa menggunakan semula program.
Sama ada saiz atau kecekapan bersiri, ia pada asasnya adalah beberapa kali lebih baik daripada bersiri yang datang dengan JAVA Semakin besar data, semakin jelas kelebihannya menyusahkan untuk beroperasi