Java ObjectOutputStream (s příklady)

V tomto tutoriálu se pomocí příkladů dozvíme o prostředí Java ObjectOutputStream a jeho metodách.

ObjectOutputStreamTřída java.iobalíček lze použít k napsání předměty, které mohou být přečteny ObjectInputStream.

Rozšiřuje OutputStreamabstraktní třídu.

Práce ObjectOutputStream

V zásadě ObjectOutputStreamkóduje objekty Java pomocí názvu třídy a hodnot objektů. A proto generuje odpovídající proudy. Tento proces se nazývá serializace.

Tyto převedené streamy lze uložit do souborů a lze je přenášet mezi sítěmi.

Poznámka : ObjectOutputStreamTřída zapisuje pouze ty objekty, které implementují Serializablerozhraní. Je to proto, že objekty je třeba při zápisu do streamu serializovat

Vytvořte ObjectOutputStream

Abychom mohli vytvořit výstupní proud objektu, musíme java.io.ObjectOutputStreamnejprve importovat balíček. Jakmile balíček naimportujeme, můžeme vytvořit výstupní proud.

 // Creates a FileOutputStream where objects from ObjectOutputStream are written FileOutputStream fileStream = new FileOutputStream(String file); // Creates the ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream); 

Ve výše uvedeném příkladu jsme vytvořili výstupní proud objektu s názvem objStream, který je propojen s výstupním proudem souboru s názvem fileStream.

Metody ObjectOutputStream

ObjectOutputStreamTřída poskytuje implementace pro různé metody prezentovat ve OutputStreamtřídě.

metoda write ()

  • write() - zapíše bajt dat do výstupního proudu
  • writeBoolean() - zapisuje data v booleovské formě
  • writeChar() - zapisuje data ve formě znaků
  • writeInt() - zapisuje data v celočíselném tvaru
  • writeObject() - zapíše objekt do výstupního proudu

Příklad 1: Java ObjectOutputStream

Podívejme se, jak můžeme použít ObjectOutputStreamk ukládání objektů do souboru a ObjectInputStreamke čtení těchto objektů ze souborů

 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ýstup

 Celé číslo: 5 Řetězcové údaje: Toto je programové 

Ve výše uvedeném příkladu jsme použili readInt()metodu a readObject()metodu ke čtení celočíselných dat a dat objektů ze souborů.

Zde jsme použili ObjectOutputStreamk zápisu dat do souboru. Potom jsme načetli data ze souboru pomocí ObjectInputStream.

Příklad 2: Java ObjectOutputStream

Vezměme si další pří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ýstup

 Jméno psa: Tyson Plemeno psa: Labrador 

Ve výše uvedeném příkladu jsme vytvořili

  • ObjectOutputStreampojmenovaný objOut pomocí FileOutputStreampojmenovaného fileOut
  • ObjectInputStreampojmenovaný objIn pomocí FileInputStreampojmenovaného fileIn.
  • Objekt dog1 třídy Dog.

Zde jsme pak použili výstupní proud objektu k zápisu objektu do souboru. A vstupní proud objektu ke čtení objektu ze souboru.

Poznámka : Třída Dog implementuje Serializablerozhraní. Je to proto, že ObjectOutputStreamjediný zapisuje objekty, které lze serializovat do výstupního proudu.

Další metody ObjectOutputStream

Metody Popisy
flush() vymaže všechna data z výstupního proudu
drain() umístí všechna data ve vyrovnávací paměti do výstupního proudu
close() zavře výstupní proud

Další informace najdete v Java ObjectOutputStream (oficiální dokumentace Java).

Zajímavé články...