V tomto tutoriálu se pomocí příkladů dozvíme o prostředí Java ObjectOutputStream a jeho metodách.
ObjectOutputStream
Třída java.io
balíček lze použít k napsání předměty, které mohou být přečteny ObjectInputStream
.
Rozšiřuje OutputStream
abstraktní třídu.
Práce ObjectOutputStream
V zásadě ObjectOutputStream
kó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 : ObjectOutputStream
Třída zapisuje pouze ty objekty, které implementují Serializable
rozhraní. 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.ObjectOutputStream
nejprve 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
ObjectOutputStream
Třída poskytuje implementace pro různé metody prezentovat ve OutputStream
tří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 ObjectOutputStream
k ukládání objektů do souboru a ObjectInputStream
ke č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 ObjectOutputStream
k 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
ObjectOutputStream
pojmenovaný objOut pomocíFileOutputStream
pojmenovaného fileOutObjectInputStream
pojmenovaný objIn pomocíFileInputStream
pojmenované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 Serializable
rozhraní. Je to proto, že ObjectOutputStream
jediný 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).