Java ObjectOutputStream (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 ObjectOutputStreamosztálya java.iohasználható olyan objektumok írására, amelyek olvashatók ObjectInputStream.

Kiterjeszti az OutputStreamabsztrakt osztályt.

Az ObjectOutputStream működése

Alapvetően a ObjectOutputStreamJava objektumokat az osztálynév és az objektumértékek felhasználásával kódolja. És ezáltal megfelelő áramokat generál. Ezt a folyamatot sorosításnak nevezik.

Az átalakított adatfolyamok fájlokban tárolhatók és átvihetők a hálózatok között.

Megjegyzés : Az ObjectOutputStreamosztály csak azokat az objektumokat írja, amelyek megvalósítják az Serializableinterfészt. Az objektumokat ugyanis sorosítani kell, miközben a folyamba írnak

Hozzon létre egy ObjectOutputStream

Az objektum kimeneti adatfolyamának létrehozásához java.io.ObjectOutputStreamelőször importálnunk kell a csomagot. A csomag importálása után a következőképpen hozhatunk létre kimeneti adatfolyamot.

 // Creates a FileOutputStream where objects from ObjectOutputStream are written FileOutputStream fileStream = new FileOutputStream(String file); // Creates the ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream); 

A fenti példában létrehoztunk egy objStream nevű objektum kimeneti adatfolyamot, amely a fileStream nevű fájl kimeneti adatfolyamhoz van kapcsolva.

Az ObjectOutputStream módszerei

Az ObjectOutputStreamosztály megvalósításokat biztosít az OutputStreamosztályban jelen lévő különböző módszerek számára .

write () módszer

  • write() - az adatok bájtját írja a kimeneti adatfolyamba
  • writeBoolean() - írja az adatokat logikai formában
  • writeChar() - írja az adatokat karakteres formában
  • writeInt() - egész számban írja az adatokat
  • writeObject() - ír objektumot a kimeneti adatfolyamba

1. példa: Java ObjectOutputStream

Lássuk, hogyan használhatjuk ObjectOutputStreamaz objektumokat egy fájlban és ObjectInputStreamhogyan olvashatjuk ki ezeket az objektumokat a fájlokból

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

Kimenet

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

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

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

2. példa: Java ObjectOutputStream

Vegyünk egy másik 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 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(); ) ) ) 

Kimenet

 Kutya neve: Tyson kutyafajta: labrador 

A fenti példában létrehoztunk

  • ObjectOutputStreammegnevezett objOut a FileOutputStreammegnevezett fileOut használatával
  • ObjectInputStreammegnevezett objIn a FileInputStreammegnevezett fileIn használatával.
  • A Dog osztály objektum kutyája1.

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. Ennek oka, hogy ObjectOutputStreamcsak a kimeneti adatfolyamba sorolható objektumok írhatók.

Az ObjectOutputStream egyéb módszerei

Mód Leírások
flush() törli az összes adatot a kimeneti adatfolyamból
drain() az összes pufferelt adatot a kimeneti adatfolyamba helyezi
close() bezárja a kimeneti adatfolyamot

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

érdekes cikkek...