V tomto tutoriálu se pomocí příkladů dozvíme o prostředí Java ObjectOutputStream a jeho metodách.
ObjectInputStream
Třída java.io
obalu může být použit pro čtení objekty, které byly již dříve napsané ObjectOutputStream
.
Rozšiřuje InputStream
abstraktní třídu.
Než se o ObjectInputStream
kurzu dozvíte , ujistěte se, že víte o třídě ObjectOutputStream.
Práce ObjectInputStream
Používá ObjectInputStream
se hlavně ke čtení dat zapsaných ObjectOutputStream
.
V zásadě ObjectOutputStream
převádí objekty Java do odpovídajících proudů. Toto se nazývá serializace. Tyto převedené streamy lze ukládat do souborů nebo přenášet prostřednictvím sítí.
Nyní, pokud potřebujeme tyto objekty číst, použijeme nástroj, ObjectInputStream
který převede proudy zpět na odpovídající objekty. Toto se nazývá deserializace.
Vytvořte ObjectInputStream
Abychom vytvořili vstupní proud objektu, musíme java.io.ObjectInputStream
nejprve importovat balíček. Jakmile importujeme balíček, můžeme vytvořit vstupní proud.
// 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);
Ve výše uvedeném příkladu jsme vytvořili vstupní proud objektu s názvem objStream, který je propojen se vstupním proudem souboru s názvem fileStream.
Nyní objStream
lze použít ke čtení objektů ze souboru.
Metody ObjectInputStream
ObjectInputStream
Třída poskytuje implementace různých metod prezentovat ve InputStream
třídě.
metoda read ()
read()
- načte bajt dat ze vstupního proudureadBoolean()
- čte data v booleovské forměreadChar()
- čte data ve formě znakůreadInt()
- čte data v celočíselném tvarureadObject()
- načte objekt ze vstupního proudu
Příklad 1: Java ObjectInputStream
Podívejme se, jak můžeme pomocí ObjectInputStream
třídy číst objekty zapsané ObjectOutputStream
třídou.
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ýstup
Celé číslo: 5 Řetězcové údaje: Toto je programové
Ve výše uvedeném příkladu jsme použili metodu readInt()
a readObject()
ke čtení celočíselných dat a dat objektů ze souboru.
Zde jsme použili ObjectOutputStream
k zápisu dat do souboru. Potom jsme načetli data ze souboru pomocí ObjectInputStream
.
Příklad 2: Java ObjectInputStream
Podívejme se na další praktický 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 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ýstup
Jméno psa: Tyson Plemeno psa: Labrador
Ve výše uvedeném příkladu jsme vytvořili
ObjectOutputStream
pojmenovaný výstup pomocíFileOutputStream
pojmenovaného souboruObjectInputStream
pojmenovaný vstup pomocíFileInputStream
pojmenovaného fileStream- Objektový pes 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 serializovatelné objekty do výstupního proudu.
Další metody ObjectInputStream
Metody | Popisy |
---|---|
available() | vrátí dostupný počet bajtů ve vstupním proudu |
mark() | označí pozici ve vstupním proudu, do které byla načtena data |
reset() | vrátí ovládací prvek do bodu ve vstupním proudu, kde byla nastavena značka |
skipBytes() | přeskočí a zahodí zadané bajty ze vstupního proudu |
close() | zavře vstupní proud objektu |
Další informace najdete v Java ObjectInputStream (oficiální dokumentace Java).