Java ObjectOutputStream (s príkladmi)

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

ObjectOutputStreamTrieda java.iobalíček možno použiť na napísanie predmety, ktoré môžu byť prečítané ObjectInputStream.

Rozširuje OutputStreamabstraktnú triedu.

Fungovanie ObjectOutputStream

V zásade ObjectOutputStreamkó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 : ObjectOutputStreamTrieda zapisuje iba tie objekty, ktoré implementujú Serializablerozhranie. 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.ObjectOutputStreambalí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

ObjectOutputStreamTrieda poskytuje implementácie pre rôzne metódy prezentovať vo OutputStreamtriede.

metóda write ()

  • write() - zapisuje bajt dát do výstupného toku
  • writeBoolean() - zapisuje údaje v booleovskej podobe
  • writeChar() - zapisuje údaje vo forme znakov
  • writeInt() - zapisuje údaje v celočíselnom tvare
  • writeObject() - zapíše objekt do výstupného toku

Príklad 1: Java ObjectOutputStream

Pozrime sa, ako môžeme použiť ObjectOutputStreamna ukladanie objektov do súboru a ObjectInputStreamna čí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 ObjectOutputStreamna 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

  • ObjectOutputStreampomenovaný objOut pomocou FileOutputStreampomenovaného fileOut
  • ObjectInputStreampomenovaný objIn pomocou FileInputStreampomenované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 Serializablerozhranie. Je to preto, lebo ObjectOutputStreamjediný 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).

Zaujímavé články...