Java ObjectInputStream (з прикладами)

У цьому посібнику ми дізнаємося про Java ObjectOutputStream та його методи за допомогою прикладів.

ObjectInputStreamКлас java.ioпакета може бути використаний для читання об'єктів , які раніше були написані ObjectOutputStream.

Це розширює InputStreamабстрактний клас.

Перш ніж дізнатись про ObjectInputStreamклас, переконайтеся, що знаєте про клас ObjectOutputStream.

Робота ObjectInputStream

В ObjectInputStreamосновному використовується для читання даних, записаних ObjectOutputStream.

В основному, ObjectOutputStreamперетворює об'єкти Java у відповідні потоки. Це відоме як серіалізація. Ці перетворені потоки можна зберігати у файлах або передавати через мережі.

Тепер, якщо нам потрібно прочитати ці об'єкти, ми використаємо те, ObjectInputStreamщо перетворить потоки назад у відповідні об'єкти. Це відоме як десериалізація.

Створіть ObjectInputStream

Для того, щоб створити вхідний потік об'єкта, java.io.ObjectInputStreamспочатку потрібно імпортувати пакет. Як тільки ми імпортуємо пакет, ось як ми можемо створити вхідний потік.

 // 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); 

У наведеному вище прикладі ми створили вхідний потік об’єкта з назвою objStream, який пов’язаний із потоком вхідного файлу з назвою fileStream.

Тепер його objStreamможна використовувати для читання об’єктів з файлу.

Методи ObjectInputStream

ObjectInputStreamКлас забезпечує реалізацію різних способів подання до InputStreamкласі.

метод read ()

  • read() - зчитує байт даних із вхідного потоку
  • readBoolean() - зчитує дані у логічній формі
  • readChar() - зчитує дані у символьній формі
  • readInt() - зчитує дані у цілочисельній формі
  • readObject() - зчитує об’єкт із вхідного потоку

Приклад 1: Java ObjectInputStream

Давайте подивимося, як ми можемо використовувати ObjectInputStreamклас для читання об’єктів, написаних ObjectOutputStreamкласом.

 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(); ) ) ) 

Вихідні дані

 Цілочисельні дані: 5 Рядкові дані: Це програма 

У наведеному вище прикладі ми використовували метод readInt()and readObject()для зчитування цілочисельних даних та даних об’єктів із файлу.

Тут ми використали ObjectOutputStreamдля запису даних у файл. Потім ми зчитуємо дані з файлу за допомогою ObjectInputStream.

Приклад 2: Java ObjectInputStream

Побачимо ще один практичний приклад,

 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(); ) ) ) 

Вихідні дані

 Ім'я собаки: Тайсон Порода собак: лабрадор 

У наведеному вище прикладі ми створили

  • ObjectOutputStreamіменований вивід за допомогою FileOutputStreamіменованого файлу
  • ObjectInputStreamіменований вхід за допомогою FileInputStreamіменованого fileStream
  • Собака-об'єкт класу Dog

Тут ми використали вихідний потік об’єкта для запису об’єкта у файл. І вхідний потік об’єкта для зчитування об’єкта з файлу.

Примітка : Клас Dog реалізує Serializableінтерфейс. Це тому, що ObjectOutputStreamєдиний записує об’єкти, що серіалізуються, у вихідний потік.

Інші методи ObjectInputStream

Методи Описи
available() повертає доступну кількість байт у вхідному потоці
mark() позначає позицію у вхідному потоці, до якої були прочитані дані
reset() повертає елемент керування до точки у вхідному потоці, де була встановлена ​​позначка
skipBytes() пропускає та відкидає зазначені байти із вхідного потоку
close() закриває вхідний потік об'єкта

Щоб дізнатись більше, відвідайте Java ObjectInputStream (офіційна документація Java).

Цікаві статті...