У цьому посібнику ми дізнаємося про 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).