Java ObjectInputStream (s příklady)

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

ObjectInputStreamTřída java.ioobalu může být použit pro čtení objekty, které byly již dříve napsané ObjectOutputStream.

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

Než se o ObjectInputStreamkurzu dozvíte , ujistěte se, že víte o třídě ObjectOutputStream.

Práce ObjectInputStream

Používá ObjectInputStreamse hlavně ke čtení dat zapsaných ObjectOutputStream.

V zásadě ObjectOutputStreampř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, ObjectInputStreamkterý 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.ObjectInputStreamnejprve 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í objStreamlze použít ke čtení objektů ze souboru.

Metody ObjectInputStream

ObjectInputStreamTřída poskytuje implementace různých metod prezentovat ve InputStreamtřídě.

metoda read ()

  • read() - načte bajt dat ze vstupního proudu
  • readBoolean() - čte data v booleovské formě
  • readChar() - čte data ve formě znaků
  • readInt() - čte data v celočíselném tvaru
  • readObject() - načte objekt ze vstupního proudu

Příklad 1: Java ObjectInputStream

Podívejme se, jak můžeme pomocí ObjectInputStreamtřídy číst objekty zapsané ObjectOutputStreamtří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 ObjectOutputStreamk 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

  • ObjectOutputStreampojmenovaný výstup pomocí FileOutputStreampojmenovaného souboru
  • ObjectInputStreampojmenovaný vstup pomocí FileInputStreampojmenované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 Serializablerozhraní. Je to proto, že ObjectOutputStreamjediný 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).

Zajímavé články...