Dalam tutorial ini, kita akan belajar mengenai Java ObjectOutputStream dan kaedahnya dengan bantuan contoh.
The ObjectOutputStream
golongan orang java.io
pakej boleh digunakan untuk menulis objek yang boleh dibaca oleh ObjectInputStream
.
Ia meluaskan OutputStream
kelas abstrak.
Mengendalikan ObjectOutputStream
Pada dasarnya, ObjectOutputStream
mengekod objek Java menggunakan nama kelas dan nilai objek. Oleh itu, menghasilkan aliran yang sesuai. Proses ini dikenali sebagai serialisasi.
Aliran yang ditukar tersebut dapat disimpan dalam fail dan dapat dipindahkan di antara rangkaian.
Catatan : ObjectOutputStream
Kelas hanya menulis objek yang melaksanakan Serializable
antara muka. Ini kerana objek perlu dibuat bersiri semasa menulis ke aliran
Buat ObjectOutputStream
Untuk membuat aliran output objek, kita mesti mengimport java.io.ObjectOutputStream
pakej terlebih dahulu. Sebaik sahaja kami mengimport pakej, berikut adalah bagaimana kita dapat membuat aliran output.
// Creates a FileOutputStream where objects from ObjectOutputStream are written FileOutputStream fileStream = new FileOutputStream(String file); // Creates the ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream);
Dalam contoh di atas, kami telah membuat aliran output objek bernama objStream yang dihubungkan dengan aliran output file bernama fileStream.
Kaedah ObjectOutputStream
The ObjectOutputStream
kelas menyediakan pelaksanaan untuk kaedah yang berbeza hadir dalam OutputStream
kelas.
tulis () Kaedah
write()
- menulis bait data ke aliran outputwriteBoolean()
- menulis data dalam bentuk booleanwriteChar()
- menulis data dalam bentuk watakwriteInt()
- menulis data dalam bentuk integerwriteObject()
- menulis objek ke aliran output
Contoh 1: Java ObjectOutputStream
Mari kita lihat bagaimana kita dapat menggunakan ObjectOutputStream
untuk menyimpan objek dalam fail dan ObjectInputStream
membaca objek dari fail
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; class Main ( public static void main(String() args) ( int data1 = 5; String data2 = "This is programiz"; try ( FileOutputStream file = new FileOutputStream("file.txt"); // Creates an ObjectOutputStream ObjectOutputStream output = new ObjectOutputStream(file); // writes objects to output stream output.writeInt(data1); output.writeObject(data2); // Reads data using the ObjectInputStream FileInputStream fileStream = new FileInputStream("file.txt"); ObjectInputStream objStream = new ObjectInputStream(fileStream); System.out.println("Integer data :" + objStream.readInt()); System.out.println("String data: " + objStream.readObject()); output.close(); objStream.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Pengeluaran
Data integer: 5 Data rentetan: Ini adalah programiz
Dalam contoh di atas, kami telah menggunakan readInt()
kaedah dan readObject()
kaedah untuk membaca data integer dan data objek dari fail.
Di sini, kami telah menggunakan ObjectOutputStream
untuk menulis data ke fail. Kami kemudian membaca data dari fail menggunakan ObjectInputStream
.
Contoh 2: Java ObjectOutputStream
Mari ambil contoh lain,
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; class Dog implements Serializable ( String name; String breed; public Dog(String name, String breed) ( this.name = name; this.breed = breed; ) ) class Main ( public static void main(String() args) ( // Creates an object of Dog class Dog dog1 = new Dog("Tyson", "Labrador"); try ( FileOutputStream fileOut = new FileOutputStream("file.txt"); // Creates an ObjectOutputStream ObjectOutputStream objOut = new ObjectOutputStream(fileOut); // Writes objects to the output stream objOut.writeObject(dog1); // Reads the object FileInputStream fileIn = new FileInputStream("file.txt"); ObjectInputStream objIn = new ObjectInputStream(fileIn); // Reads the objects Dog newDog = (Dog) objIn.readObject(); System.out.println("Dog Name: " + newDog.name); System.out.println("Dog Breed: " + newDog.breed); objOut.close(); objIn.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Pengeluaran
Nama Anjing: Tyson Dog Breed: Labrador
Dalam contoh di atas, kami telah membuat
ObjectOutputStream
bernama objOut menggunakan fileOut yangFileOutputStream
dinamakanObjectInputStream
dinamakan objIn menggunakan fileIn yangFileInputStream
dinamakan.- Anjing objek1 dari kelas Anjing.
Di sini, kita kemudian menggunakan aliran output objek untuk menulis objek ke fail. Dan, aliran input objek untuk membaca objek dari fail.
Nota : Kelas Dog menggunakan Serializable
antara muka. Ini kerana satu- ObjectOutputStream
satunya objek yang boleh ditulis secara bersiri ke aliran output.
Kaedah Lain ObjectOutputStream
Kaedah | Penerangan |
---|---|
flush() | membersihkan semua data dari aliran output |
drain() | meletakkan semua data yang disangga dalam aliran output |
close() | menutup aliran output |
Untuk mengetahui lebih lanjut, kunjungi Java ObjectOutputStream (dokumentasi Java rasmi).