Ebben az oktatóanyagban példák segítségével megismerhetjük a Java ObjectOutputStream-et és annak módszereit.
A csomag ObjectInputStream
osztálya java.io
felhasználható olyan objektumok elolvasására, amelyeket korábban írt ObjectOutputStream
.
Kiterjeszti az InputStream
absztrakt osztályt.
Mielőtt megismerné az ObjectInputStream
osztályt, győződjön meg róla, hogy tud az ObjectOutputStream osztályról.
Az ObjectInputStream működése
A ObjectInputStream
főként a ObjectOutputStream
. Által írt adatok olvasására szolgál .
Alapvetően a ObjectOutputStream
Java 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.ObjectInputStream
elő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 objStream
objektumok olvasására használható a fájlból.
Az ObjectInputStream módszerei
Az ObjectInputStream
osztály az InputStream
osztá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ólreadBoolean()
- logikai formában olvassa az adatokatreadChar()
- karakter formában olvassa az adatokatreadInt()
- egész számban olvassa az adatokatreadObject()
- beolvassa az objektumot a bemeneti adatfolyamból
1. példa: Java ObjectInputStream
Nézzük meg, hogyan használhatjuk az ObjectInputStream
osztá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 ObjectOutputStream
adatot í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
ObjectOutputStream
megnevezett kimenetet aFileOutputStream
megnevezett fájl segítségévelObjectInputStream
megnevezett bemenet aFileInputStream
megnevezett 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 Serializable
interfészt. Azért, mert az ObjectOutputStream
egyetlen 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ó).