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()и 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).

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