В този урок ще научим за 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).