У овом упутству ћемо научити о Јава ОбјецтОутпутСтреам и његовим методама уз помоћ примера.
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() | затвара улазни ток објекта |
Да бисте сазнали више, посетите Јава ОбјецтИнпутСтреам (званична Јава документација).