V tomto tutoriáli sa pomocou príkladov dozvieme o prostredí Java ObjectOutputStream a jeho metódach.
ObjectInputStream
Trieda java.io
obalu môže byť použitý pre čítanie objekty, ktoré boli už skôr napísané ObjectOutputStream
.
Rozširuje InputStream
abstraktnú triedu.
Predtým, ako sa dozviete niečo o ObjectInputStream
triede, nezabudnite vedieť o triede ObjectOutputStream.
Fungovanie ObjectInputStream
Používa ObjectInputStream
sa hlavne na čítanie údajov zapísaných serverom ObjectOutputStream
.
V zásade ObjectOutputStream
prevádza objekty Java na zodpovedajúce toky. Toto sa nazýva serializácia. Tieto prevedené streamy je možné uložiť do súborov alebo preniesť cez siete.
Teraz, ak potrebujeme tieto objekty prečítať, použijeme nástroj, ObjectInputStream
ktorý prevedie prúdy späť na zodpovedajúce objekty. Toto sa nazýva deserializácia.
Vytvorte ObjectInputStream
Aby sme vytvorili vstupný prúd objektov, musíme najskôr importovať java.io.ObjectInputStream
balík. Po importovaní balíka môžeme vytvoriť vstupný tok.
// 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);
Vo vyššie uvedenom príklade sme vytvorili vstupný tok objektov s názvom objStream, ktorý je prepojený so vstupným tokom súborov s názvom fileStream.
Teraz je objStream
možné ich použiť na čítanie objektov zo súboru.
Metódy ObjectInputStream
ObjectInputStream
Trieda poskytuje implementácia rôznych metód prezentovať vo InputStream
triede.
metóda read ()
read()
- načíta bajt dát zo vstupného tokureadBoolean()
- číta dáta v booleovskej podobereadChar()
- číta dáta vo forme znakovreadInt()
- číta dáta v celočíselnej podobereadObject()
- načíta objekt zo vstupného toku
Príklad 1: Java ObjectInputStream
Pozrime sa, ako môžeme pomocou ObjectInputStream
triedy čítať objekty napísané ObjectOutputStream
triedou.
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(); ) ) )
Výkon
Celé dáta: 5 Reťazcové údaje: Toto je programové
Vo vyššie uvedenom príklade sme použili metódu readInt()
and readObject()
na načítanie celočíselných údajov a údajov o objektoch zo súboru.
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 ObjectInputStream
Pozrime sa na ďalší praktický 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 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(); ) ) )
Výkon
Meno psa: Tyson Plemeno psa: Labrador
Vo vyššie uvedenom príklade sme vytvorili
ObjectOutputStream
pomenovaný výstup pomocouFileOutputStream
pomenovaného súboruObjectInputStream
pomenovaný vstup pomocouFileInputStream
pomenovaného fileStream- Objektový pes triedy Pes
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 serializovateľné objekty do výstupného toku.
Ďalšie metódy ObjectInputStream
Metódy | Popisy |
---|---|
available() | vráti dostupný počet bajtov vo vstupnom toku |
mark() | označí pozíciu vo vstupnom toku, do ktorej boli načítané údaje |
reset() | vráti ovládací prvok do bodu vo vstupnom toku, kde bola nastavená značka |
skipBytes() | preskočí a zahodí zadané bajty zo vstupného toku |
close() | zavrie vstupný prúd objektu |
Ak sa chcete dozvedieť viac, navštívte stránku Java ObjectInputStream (oficiálna dokumentácia Java).