В този урок ще научим за Java ObjectOutputStream и неговите методи с помощта на примери.
В ObjectOutputStream
класа на java.io
пакета може да се използва за да напишете предмети, които могат да бъдат прочетени от ObjectInputStream
.
Той разширява OutputStream
абстрактния клас.
Работа на ObjectOutputStream
По принцип ObjectOutputStream
кодира Java обекти, като използва името на класа и стойностите на обекта. И, следователно, генерира съответните потоци. Този процес е известен като сериализация.
Тези преобразувани потоци могат да се съхраняват във файлове и могат да се прехвърлят между мрежите.
Забележка : ObjectOutputStream
Класът записва само тези обекти, които реализират Serializable
интерфейса. Това е така, защото обектите трябва да бъдат сериализирани, докато пишат в потока
Създайте ObjectOutputStream
За да създадем обектен изходен поток, първо трябва да импортираме java.io.ObjectOutputStream
пакета. След като импортираме пакета, ето как можем да създадем изходен поток.
// Creates a FileOutputStream where objects from ObjectOutputStream are written FileOutputStream fileStream = new FileOutputStream(String file); // Creates the ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream);
В горния пример създадохме обектен изходен поток, наречен objStream, който е свързан с изходния поток на файла, наречен fileStream.
Методи на ObjectOutputStream
В ObjectOutputStream
клас осигурява приложения за различни методи представят в OutputStream
клас.
метод write ()
write()
- записва байт данни в изходния потокwriteBoolean()
- записва данни в логическа формаwriteChar()
- записва данни във вид на символиwriteInt()
- записва данни в цяло числоwriteObject()
- записва обект в изходния поток
Пример 1: Java ObjectOutputStream
Нека видим как можем да използваме ObjectOutputStream
за съхраняване на обекти във файл и ObjectInputStream
за четене на тези обекти от файловете
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"); // Creates an ObjectOutputStream ObjectOutputStream output = new ObjectOutputStream(file); // writes objects to output stream output.writeInt(data1); output.writeObject(data2); // Reads data using the ObjectInputStream FileInputStream fileStream = new FileInputStream("file.txt"); ObjectInputStream objStream = new ObjectInputStream(fileStream); System.out.println("Integer data :" + objStream.readInt()); System.out.println("String data: " + objStream.readObject()); output.close(); objStream.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Изход
Целочислени данни: 5 Данни за низове: Това е програма
В горния пример използвахме readInt()
метода и readObject()
метода за четене на целочислени данни и обектни данни от файловете.
Тук използвахме, за ObjectOutputStream
да запишем данни във файла. След това четем данните от файла с помощта на ObjectInputStream
.
Пример 2: Java ObjectOutputStream
Нека вземем друг пример,
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 dog1 = new Dog("Tyson", "Labrador"); try ( FileOutputStream fileOut = new FileOutputStream("file.txt"); // Creates an ObjectOutputStream ObjectOutputStream objOut = new ObjectOutputStream(fileOut); // Writes objects to the output stream objOut.writeObject(dog1); // Reads the object FileInputStream fileIn = new FileInputStream("file.txt"); ObjectInputStream objIn = new ObjectInputStream(fileIn); // Reads the objects Dog newDog = (Dog) objIn.readObject(); System.out.println("Dog Name: " + newDog.name); System.out.println("Dog Breed: " + newDog.breed); objOut.close(); objIn.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Изход
Име на куче: Порода кучета Тайсън: лабрадор
В горния пример ние създадохме
ObjectOutputStream
с име на objOut с помощта наFileOutputStream
наименования файлOutObjectInputStream
с име на objIn, използвайкиFileInputStream
наименования файлIn.- Обект dog1 от клас Dog.
След това използвахме изходния поток на обекта, за да запишем обекта във файла. И входният поток на обекта за четене на обекта от файла.
Забележка : Класът Dog изпълнява Serializable
интерфейса. Това е така, защото ObjectOutputStream
единствените обекти, които могат да бъдат сериализирани в изходния поток.
Други методи на ObjectOutputStream
Методи | Описания |
---|---|
flush() | изчиства всички данни от изходния поток |
drain() | поставя всички буферирани данни в изходния поток |
close() | затваря изходния поток |
За да научите повече, посетете Java ObjectOutputStream (официална документация за Java).