Java ObjectInputStream (s príkladmi)

V tomto tutoriáli sa pomocou príkladov dozvieme o prostredí Java ObjectOutputStream a jeho metódach.

ObjectInputStreamTrieda java.ioobalu môže byť použitý pre čítanie objekty, ktoré boli už skôr napísané ObjectOutputStream.

Rozširuje InputStreamabstraktnú triedu.

Predtým, ako sa dozviete niečo o ObjectInputStreamtriede, nezabudnite vedieť o triede ObjectOutputStream.

Fungovanie ObjectInputStream

Používa ObjectInputStreamsa hlavne na čítanie údajov zapísaných serverom ObjectOutputStream.

V zásade ObjectOutputStreamprevá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, ObjectInputStreamktorý 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.ObjectInputStreambalí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 objStreammožné ich použiť na čítanie objektov zo súboru.

Metódy ObjectInputStream

ObjectInputStreamTrieda poskytuje implementácia rôznych metód prezentovať vo InputStreamtriede.

metóda read ()

  • read() - načíta bajt dát zo vstupného toku
  • readBoolean() - číta dáta v booleovskej podobe
  • readChar() - číta dáta vo forme znakov
  • readInt() - číta dáta v celočíselnej podobe
  • readObject() - načíta objekt zo vstupného toku

Príklad 1: Java ObjectInputStream

Pozrime sa, ako môžeme pomocou ObjectInputStreamtriedy čítať objekty napísané ObjectOutputStreamtriedou.

 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 ObjectOutputStreamna 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

  • ObjectOutputStreampomenovaný výstup pomocou FileOutputStreampomenovaného súboru
  • ObjectInputStreampomenovaný vstup pomocou FileInputStreampomenované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 Serializablerozhranie. Je to preto, lebo ObjectOutputStreamjediný 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).

Zaujímavé články...