Java ObjectInputStream (с примери)

В този урок ще научим за Java ObjectOutputStream и неговите методи с помощта на примери.

В ObjectInputStreamкласа на java.ioпакета може да се използва за четене на обекти, които преди това са били написани от ObjectOutputStream.

Той разширява InputStreamабстрактния клас.

Преди да научите за ObjectInputStreamкласа, уверете се, че знаете за ObjectOutputStream Class.

Работа на ObjectInputStream

The 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 изпълнява Serializableинтерфейса. Това е така, защото ObjectOutputStreamединственият записва сериализуемите обекти в изходния поток.

Други методи на ObjectInputStream

Методи Описания
available() връща наличния брой байтове във входния поток
mark() маркира позицията във входния поток, до която са прочетени данните
reset() връща контролата към точката във входния поток, където е зададена маркировката
skipBytes() прескача и изхвърля посочените байтове от входния поток
close() затваря входния поток на обекта

За да научите повече, посетете Java ObjectInputStream (официална документация за Java).

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