Dalam tutorial ini, kita akan belajar mengenai Java ObjectOutputStream dan kaedahnya dengan bantuan contoh.
The ObjectInputStream
golongan orang java.io
pakej boleh digunakan untuk membaca objek yang sebelum ini ditulis oleh ObjectOutputStream
.
Ia meluaskan InputStream
kelas abstrak.
Sebelum anda mengetahui mengenai ObjectInputStream
kelas, pastikan anda mengetahui mengenai Kelas ObjectOutputStream.
Kerja ObjectInputStream
Ini ObjectInputStream
digunakan terutamanya untuk membaca data yang ditulis oleh ObjectOutputStream
.
Pada dasarnya, ObjectOutputStream
menukar objek Java menjadi aliran yang sesuai. Ini dikenali sebagai serialisasi. Aliran yang ditukar tersebut dapat disimpan dalam fail atau dipindahkan melalui rangkaian.
Sekarang, jika kita perlu membaca objek-objek itu, kita akan menggunakan ObjectInputStream
yang akan mengubah aliran kembali ke objek yang sesuai. Ini dikenali sebagai deserialization.
Buat ObjectInputStream
Untuk membuat aliran input objek, kita mesti mengimport java.io.ObjectInputStream
pakej terlebih dahulu. Sebaik sahaja kami mengimport pakej, berikut adalah bagaimana kita dapat membuat aliran input.
// Creates a file input stream linked with the specified file FileInputStream fileStream = new FileInputStream(String file); // Creates an object input stream using the file input stream ObjectInputStream objStream = new ObjectInputStream(fileStream);
Dalam contoh di atas, kami telah membuat aliran input objek bernama objStream yang dihubungkan dengan aliran input fail bernama fileStream.
Sekarang, objStream
boleh digunakan untuk membaca objek dari fail.
Kaedah ObjectInputStream
The ObjectInputStream
kelas menyediakan pelaksanaan kaedah yang berbeza hadir dalam InputStream
kelas.
baca () Kaedah
read()
- membaca bait data dari aliran inputreadBoolean()
- membaca data dalam bentuk booleanreadChar()
- membaca data dalam bentuk watakreadInt()
- membaca data dalam bentuk integerreadObject()
- membaca objek dari aliran input
Contoh 1: Java ObjectInputStream
Mari lihat bagaimana kita boleh menggunakan ObjectInputStream
kelas untuk membaca objek yang ditulis oleh ObjectOutputStream
kelas.
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"); ObjectOutputStream output = new ObjectOutputStream(file); // Writing to the file using ObjectOutputStream output.writeInt(data1); output.writeObject(data2); FileInputStream fileStream = new FileInputStream("file.txt"); // Creating an object input stream ObjectInputStream objStream = new ObjectInputStream(fileStream); //Using the readInt() method System.out.println("Integer data :" + objStream.readInt()); // Using the readObject() method 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()
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 ObjectInputStream
Mari lihat contoh praktikal 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 dog = new Dog("Tyson", "Labrador"); try ( FileOutputStream file = new FileOutputStream("file.txt"); // Creates an ObjectOutputStream ObjectOutputStream output = new ObjectOutputStream(file); // Writes objects to the output stream output.writeObject(dog); FileInputStream fileStream = new FileInputStream("file.txt"); // Creates an ObjectInputStream ObjectInputStream input = new ObjectInputStream(fileStream); // Reads the objects Dog newDog = (Dog) input.readObject(); System.out.println("Dog Name: " + newDog.name); System.out.println("Dog Breed: " + newDog.breed); output.close(); input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Pengeluaran
Nama Anjing: Tyson Dog Breed: Labrador
Dalam contoh di atas, kami telah membuat
ObjectOutputStream
output bernama menggunakanFileOutputStream
fail bernamaObjectInputStream
input bernama menggunakanFileInputStream
fileStream bernama- Anjing objek 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 menulis objek yang boleh diselaraskan ke aliran output.
Kaedah Lain ObjectInputStream
Kaedah | Penerangan |
---|---|
available() | mengembalikan bilangan bait yang tersedia dalam aliran input |
mark() | menandakan kedudukan dalam aliran input sehingga data yang telah dibaca |
reset() | mengembalikan kawalan ke titik dalam aliran input di mana tanda itu ditetapkan |
skipBytes() | melangkau dan membuang bait yang ditentukan dari aliran input |
close() | menutup aliran input objek |
Untuk mengetahui lebih lanjut, kunjungi Java ObjectInputStream (dokumentasi Java rasmi).