Јава ОбјецтИнпутСтреам (са примерима)

У овом упутству ћемо научити о Јава ОбјецтОутпутСтреам и његовим методама уз помоћ примера.

ObjectInputStreamКласа у java.ioпакету може да се користи за читање објекте који су раније написао ObjectOutputStream.

Проширује InputStreamапстрактну класу.

Пре него што научите о ObjectInputStreamкласи, побрините се да знате о класи ОбјецтОутпутСтреам.

Рад ОбјецтИнпутСтреам

Тхе ObjectInputStreamсе углавном користи за читање података које је написао ObjectOutputStream.

У основи ObjectOutputStreamпретвара Јава објекте у одговарајуће токове. Ово је познато као сериализација. Ти конвертовани токови се могу чувати у датотекама или преносити преко мрежа.

Сада, ако треба да читамо те објекте, користићемо онај 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се може користити за читање објеката из датотеке.

Методе ОбјецтИнпутСтреам

ObjectInputStreamКласа обезбеђује имплементације различитих метода присутни у InputStreamкласи.

реад () Метода

  • read() - чита бајт података из улазног тока
  • readBoolean() - чита податке у логичкој форми
  • readChar() - чита податке у облику карактера
  • readInt() - чита податке у целобројном облику
  • readObject() - чита објект из улазног тока

Пример 1: Јава ОбјецтИнпутСтреам

Погледајмо како 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: Јава ОбјецтИнпутСтреам

Погледајмо још један практичан пример,

 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именовани филеСтреам
  • Предмет пас класе Пас

Овде смо тада користили излазни ток објекта за уписивање објекта у датотеку. И, улазни ток објекта за читање објекта из датотеке.

Напомена : Класа Дог имплементира Serializableинтерфејс. То је зато што ObjectOutputStreamједини записује серијске објекте у излазни ток.

Остале методе ОбјецтИнпутСтреам

Методе Описи
available() враћа расположиви број бајтова у улазном току
mark() означава позицију у улазном току до које су подаци прочитани
reset() враћа контролу на тачку у улазном току где је постављена ознака
skipBytes() прескаче и одбацује наведене бајтове из улазног тока
close() затвара улазни ток објекта

Да бисте сазнали више, посетите Јава ОбјецтИнпутСтреам (званична Јава документација).

Занимљиви Чланци...