Java ObjectInputStream (példákkal)

Ebben az oktatóanyagban példák segítségével megismerhetjük a Java ObjectOutputStream-et és annak módszereit.

A csomag ObjectInputStreamosztálya java.iofelhasználható olyan objektumok elolvasására, amelyeket korábban írt ObjectOutputStream.

Kiterjeszti az InputStreamabsztrakt osztályt.

Mielőtt megismerné az ObjectInputStreamosztályt, győződjön meg róla, hogy tud az ObjectOutputStream osztályról.

Az ObjectInputStream működése

A ObjectInputStreamfőként a ObjectOutputStream. Által írt adatok olvasására szolgál .

Alapvetően a ObjectOutputStreamJava objektumokat megfelelő folyamokká alakítja át. Ezt serializációnak nevezik. Az átalakított adatfolyamok fájlokban tárolhatók vagy hálózatokon keresztül továbbíthatók.

Most, ha el kell olvasnunk ezeket az objektumokat, akkor azt fogjuk használni ObjectInputStream, amely visszafordítja a folyamokat a megfelelő objektumokká. Ezt deserializációnak nevezik.

Hozzon létre egy ObjectInputStream

Objektumbeviteli adatfolyam létrehozásához java.io.ObjectInputStreamelőször importálnunk kell a csomagot. A csomag importálása után a következőképpen hozhatunk létre bemeneti adatfolyamot.

 // 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); 

A fenti példában létrehoztunk egy objStream nevű objektumbemeneti adatfolyamot, amely a fileStream nevű fájlbemenet-adatfolyamhoz kapcsolódik.

Most a objStreamobjektumok olvasására használható a fájlból.

Az ObjectInputStream módszerei

Az ObjectInputStreamosztály az InputStreamosztályban jelen lévő különböző módszerek megvalósítását biztosítja .

read () módszer

  • read() - beolvassa az adatok bájtját a bemeneti adatfolyamból
  • readBoolean() - logikai formában olvassa az adatokat
  • readChar() - karakter formában olvassa az adatokat
  • readInt() - egész számban olvassa az adatokat
  • readObject() - beolvassa az objektumot a bemeneti adatfolyamból

1. példa: Java ObjectInputStream

Nézzük meg, hogyan használhatjuk az ObjectInputStreamosztályt az osztály által írt objektumok olvasására ObjectOutputStream.

 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(); ) ) ) 

Kimenet

 Egész adatok: 5 karakterlánc-adatok: Ez a programiz 

A fenti példában a readInt()és readObject()metódust használtuk egész adatok és objektumadatok kiolvasására a fájlból.

Itt az ObjectOutputStreamadatot írtuk a fájlba. Ezután kiolvassuk a fájl adatait a ObjectInputStream.

2. példa: Java ObjectInputStream

Nézzünk meg egy másik gyakorlati példát,

 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(); ) ) ) 

Kimenet

 Kutya neve: Tyson kutyafajta: labrador 

A fenti példában létrehoztunk

  • ObjectOutputStreammegnevezett kimenetet a FileOutputStreammegnevezett fájl segítségével
  • ObjectInputStreammegnevezett bemenet a FileInputStreammegnevezett fileStream segítségével
  • A kutya osztály tárgykutyája

Itt aztán az objektum kimeneti adatfolyamát használtuk az objektum fájlba írására. És az objektum bemeneti folyama az objektum kiolvasására a fájlból.

Megjegyzés : A Dog osztály implementálja az Serializableinterfészt. Azért, mert az ObjectOutputStreamegyetlen a sorosítható objektumokat írja a kimeneti adatfolyamba.

Az ObjectInputStream egyéb módszerei

Mód Leírások
available() a bemeneti adatfolyamban rendelkezésre álló bájtok számát adja vissza
mark() jelöli azt a pozíciót a bemeneti adatfolyamban, amelyre az adatokat beolvasták
reset() visszaadja a vezérlést a bemeneti adatfolyam azon pontjára, ahol a jelölést beállították
skipBytes() kihagyja és eldobja a megadott bájtokat a bemeneti adatfolyamból
close() bezárja az objektum bemeneti folyamát

További információkért látogasson el a Java ObjectInputStream oldalra (hivatalos Java dokumentáció).

érdekes cikkek...