V tomto tutoriáli sa pomocou príkladov dozvieme o prostredí Java ObjectOutputStream a jeho metódach.
ObjectOutputStream
Trieda java.io
balíček možno použiť na napísanie predmety, ktoré môžu byť prečítané ObjectInputStream
.
Rozširuje OutputStream
abstraktnú triedu.
Fungovanie ObjectOutputStream
V zásade ObjectOutputStream
kóduje objekty Java pomocou názvu triedy a hodnôt objektov. A teda generuje zodpovedajúce prúdy. Tento proces sa nazýva serializácia.
Tieto prevedené streamy môžu byť uložené v súboroch a môžu byť prenášané medzi sieťami.
Poznámka : ObjectOutputStream
Trieda zapisuje iba tie objekty, ktoré implementujú Serializable
rozhranie. Je to tak preto, lebo objekty je potrebné počas zápisu do streamu serializovať
Vytvorte ObjectOutputStream
Aby sme mohli vytvoriť výstupný prúd objektu, musíme najskôr importovať java.io.ObjectOutputStream
balík. Po importovaní balíka môžeme vytvoriť výstupný prúd.
// Creates a FileOutputStream where objects from ObjectOutputStream are written FileOutputStream fileStream = new FileOutputStream(String file); // Creates the ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream);
Vo vyššie uvedenom príklade sme vytvorili výstupný prúd objektu s názvom objStream, ktorý je prepojený s výstupným prúdom súboru s názvom fileStream.
Metódy ObjectOutputStream
ObjectOutputStream
Trieda poskytuje implementácie pre rôzne metódy prezentovať vo OutputStream
triede.
metóda write ()
write()
- zapisuje bajt dát do výstupného tokuwriteBoolean()
- zapisuje údaje v booleovskej podobewriteChar()
- zapisuje údaje vo forme znakovwriteInt()
- zapisuje údaje v celočíselnom tvarewriteObject()
- zapíše objekt do výstupného toku
Príklad 1: Java ObjectOutputStream
Pozrime sa, ako môžeme použiť ObjectOutputStream
na ukladanie objektov do súboru a ObjectInputStream
na čítanie týchto objektov zo súborov
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(); ) ) )
Výkon
Celé dáta: 5 Reťazcové údaje: Toto je programové
Vo vyššie uvedenom príklade sme použili readInt()
metódu a readObject()
metódu na načítanie celočíselných údajov a objektových údajov zo súborov.
Tu sme použili ObjectOutputStream
na zápis údajov do súboru. Údaje zo súboru potom načítame pomocou súboru ObjectInputStream
.
Príklad 2: Java ObjectOutputStream
Zoberme si ďalší príklad,
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(); ) ) )
Výkon
Meno psa: Tyson Plemeno psa: Labrador
Vo vyššie uvedenom príklade sme vytvorili
ObjectOutputStream
pomenovaný objOut pomocouFileOutputStream
pomenovaného fileOutObjectInputStream
pomenovaný objIn pomocouFileInputStream
pomenovaného fileIn.- Objekt dog1 triedy Dog.
Tu sme potom použili výstupný prúd objektu na zápis objektu do súboru. A vstupný prúd objektu na načítanie objektu zo súboru.
Poznámka : Trieda Dog implementuje Serializable
rozhranie. Je to preto, lebo ObjectOutputStream
jediný zapisuje objekty, ktoré je možné serializovať do výstupného toku.
Ďalšie metódy ObjectOutputStream
Metódy | Popisy |
---|---|
flush() | vymaže všetky údaje z výstupného toku |
drain() | umiestni všetky dáta vo vyrovnávacej pamäti do výstupného toku |
close() | uzavrie výstupný prúd |
Ak sa chcete dozvedieť viac, navštívte Java ObjectOutputStream (oficiálna dokumentácia Java).