Selles õpetuses õpime näidete abil Java ObjectOutputStreami ja selle meetodeid.
ObjectOutputStream
Klassi java.io
pakett saab kasutada kirjutada objektid, mida saab lugeda ObjectInputStream
.
See laiendab OutputStream
abstraktset klassi.
ObjectOutputStreami töötamine
Põhimõtteliselt ObjectOutputStream
kodeerib Java objektid klassi nime ja objekti väärtusi kasutades. Ja seega genereerib vastavad voogud. Seda protsessi nimetatakse serialiseerimiseks.
Neid teisendatud vooge saab salvestada failidesse ja neid saab võrkude vahel üle kanda.
Märkus . ObjectOutputStream
Klass kirjutab ainult need objektid, mis rakendavad Serializable
liidest. Seda seetõttu, et voos kirjutamise ajal tuleb objektid järjestada
Looge ObjectOutputStream
Objekti väljundvoo loomiseks peame java.io.ObjectOutputStream
esmalt paketi importima . Kui pakett on imporditud, saame väljundvoo luua järgmiselt.
// Creates a FileOutputStream where objects from ObjectOutputStream are written FileOutputStream fileStream = new FileOutputStream(String file); // Creates the ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream);
Ülaltoodud näites oleme loonud objekti väljundvoo nimega objStream, mis on seotud failiväljundi vooga nimega fileStream.
ObjectOutputStreami meetodid
ObjectOutputStream
Tasemega näeb implementation erinevaid meetodeid sisalduse funktsioon OutputStream
tasemega.
kirjuta () meetod
write()
- kirjutab väljundvoogu andmete baidiwriteBoolean()
- kirjutab andmed boolean kujulwriteChar()
- kirjutab andmed märkide kujulwriteInt()
- kirjutab andmed täisarvu kujulwriteObject()
- kirjutab objekti väljundvoogu
Näide 1: Java ObjectOutputStream
Vaatame, kuidas saame ObjectOutputStream
objekte faili salvestada ja ObjectInputStream
neid objekte failidest lugeda
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(); ) ) )
Väljund
Täisarvandmed: 5 stringiandmed: see on programiz
Ülaltoodud näites oleme kasutanud readInt()
meetodit ja readObject()
meetodit täisandmete ja objektiandmete lugemiseks failidest.
Siin oleme kasutanud ObjectOutputStream
faili andmete kirjutamiseks. Seejärel lugesime failist andmeid, kasutades ObjectInputStream
.
Näide 2: Java ObjectOutputStream
Võtame veel ühe näite,
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(); ) ) )
Väljund
Koera nimi: Tysoni koeratõug: labrador
Ülaltoodud näites oleme loonud
ObjectOutputStream
nimega objOut, kasutadesFileOutputStream
nimega fileOutObjectInputStream
nimega objIn nimega fileIn kasutadesFileInputStream
.- Objekti koer1 klassist Koer.
Siin oleme seejärel objekti faili kirjutamiseks kasutanud objekti väljundvoogu. Ja objekti sisestusvoog failist objekti lugemiseks.
Märkus : koerte klass rakendab Serializable
liidest. Sellepärast, et ObjectOutputStream
ainsad kirjutamisobjektid, mida saab väljundvoogu järjestada,
Muud ObjectOutputStreami meetodid
Meetodid | Kirjeldused |
---|---|
flush() | kustutab kõik andmed väljundvoost |
drain() | paneb kõik puhverdatud andmed väljundvoogu |
close() | sulgeb väljundvoo |
Lisateabe saamiseks külastage Java ObjectOutputStream (ametlik Java dokumentatsioon).