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

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

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

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

Робота ObjectOutputStream

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

Ці перетворені потоки можуть зберігатися у файлах та передаватися між мережами.

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

Створіть ObjectOutputStream

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

 // Creates a FileOutputStream where objects from ObjectOutputStream are written FileOutputStream fileStream = new FileOutputStream(String file); // Creates the ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream); 

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

Методи ObjectOutputStream

ObjectOutputStreamКлас забезпечує реалізації для різних методів представлення в OutputStreamкласі.

метод write ()

  • write() - записує байт даних у вихідний потік
  • writeBoolean() - записує дані в логічній формі
  • writeChar() - записує дані у символьній формі
  • writeInt() - записує дані у цілочисельній формі
  • writeObject() - записує об'єкт у вихідний потік

Приклад 1: Java ObjectOutputStream

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

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

Вихідні дані

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

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

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

Приклад 2: Java ObjectOutputStream

Візьмемо ще один приклад,

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

Вихідні дані

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

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

  • ObjectOutputStreamnamed objOut за допомогою FileOutputStreamіменованого fileOut
  • ObjectInputStreamnamed objIn, використовуючи названий файлIn FileInputStream.
  • Об'єкт dog1 класу Dog.

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

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

Інші методи ObjectOutputStream

Методи Описи
flush() очищає всі дані з вихідного потоку
drain() поміщає всі буферовані дані у вихідний потік
close() закриває вихідний потік

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

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