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

Вывод

 Имя собаки: Тайсон Порода собак: Лабрадор 

В приведенном выше примере мы создали

  • ObjectOutputStreamс именем objOut с использованием FileOutputStreamименованного fileOut
  • ObjectInputStreamс именем objIn с использованием FileInputStreamимени fileIn.
  • Объект dog1 класса Dog.

Здесь мы затем использовали поток вывода объекта для записи объекта в файл. И поток ввода объекта для чтения объекта из файла.

Примечание . Класс Dog реализует Serializableинтерфейс. Это потому, что ObjectOutputStreamтолько записывает объекты, которые могут быть сериализованы в выходной поток.

Другие методы ObjectOutputStream

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

Чтобы узнать больше, посетите Java ObjectOutputStream (официальная документация по Java).

Интересные статьи...