Java ObjectInputStream (Dengan Contoh)

Dalam tutorial ini, kita akan belajar mengenai Java ObjectOutputStream dan kaedahnya dengan bantuan contoh.

The ObjectInputStreamgolongan orang java.iopakej boleh digunakan untuk membaca objek yang sebelum ini ditulis oleh ObjectOutputStream.

Ia meluaskan InputStreamkelas abstrak.

Sebelum anda mengetahui mengenai ObjectInputStreamkelas, pastikan anda mengetahui mengenai Kelas ObjectOutputStream.

Kerja ObjectInputStream

Ini ObjectInputStreamdigunakan terutamanya untuk membaca data yang ditulis oleh ObjectOutputStream.

Pada dasarnya, ObjectOutputStreammenukar 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 ObjectInputStreamyang akan mengubah aliran kembali ke objek yang sesuai. Ini dikenali sebagai deserialization.

Buat ObjectInputStream

Untuk membuat aliran input objek, kita mesti mengimport java.io.ObjectInputStreampakej 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, objStreamboleh digunakan untuk membaca objek dari fail.

Kaedah ObjectInputStream

The ObjectInputStreamkelas menyediakan pelaksanaan kaedah yang berbeza hadir dalam InputStreamkelas.

baca () Kaedah

  • read() - membaca bait data dari aliran input
  • readBoolean() - membaca data dalam bentuk boolean
  • readChar() - membaca data dalam bentuk watak
  • readInt() - membaca data dalam bentuk integer
  • readObject() - membaca objek dari aliran input

Contoh 1: Java ObjectInputStream

Mari lihat bagaimana kita boleh menggunakan ObjectInputStreamkelas untuk membaca objek yang ditulis oleh ObjectOutputStreamkelas.

 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 ObjectOutputStreamuntuk 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

  • ObjectOutputStreamoutput bernama menggunakan FileOutputStreamfail bernama
  • ObjectInputStreaminput bernama menggunakan FileInputStreamfileStream 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 Serializableantara muka. Ini kerana satu- ObjectOutputStreamsatunya 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).

Artikel menarik...