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 prouduwriteBoolean()- zapisuje data v booleovské forměwriteChar()- zapisuje data ve formě znakůwriteInt()- zapisuje data v celočíselném tvaruwriteObject()- 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 fileOutObjectInputStreampojmenovaný 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).








