Selles õpetuses õpime näidete abil Java ObjectOutputStreami ja selle meetodeid.
ObjectInputStream
Klassi java.io
pakett saab kasutada lugeda esemed, mis olid varem kirjutanud ObjectOutputStream
.
See laiendab InputStream
abstraktset klassi.
Enne ObjectInputStream
klassi tundmaõppimist veenduge, et teaksite ObjectOutputStream klassi kohta.
ObjectInputStreami töötamine
Seda ObjectInputStream
kasutatakse peamiselt ObjectOutputStream
.
Põhimõtteliselt ObjectOutputStream
teisendab Java objektid vastavateks voogudeks. Seda tuntakse kui serialiseerimist. Neid teisendatud vooge saab failidesse salvestada või võrkude kaudu üle kanda.
Kui peame neid objekte lugema, kasutame seda, ObjectInputStream
mis muudab voogud vastavateks objektideks. Seda tuntakse deserialiseerumisena.
Looge ObjectInputStream
Objekti sisendvoo loomiseks peame java.io.ObjectInputStream
esmalt paketi importima . Kui pakett on imporditud, saame sisendvoo luua järgmiselt.
// 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);
Ülalolevas näites oleme loonud objekti sisendvoo nimega objStream, mis on seotud failisisestusvooga nimega fileStream.
Nüüd objStream
saab seda failist objektide lugemiseks kasutada.
ObjectInputStreami meetodid
ObjectInputStream
Tasemega näeb rakenduste erinevaid meetodeid sisalduse funktsioon InputStream
tasemega.
loe () meetod
read()
- loeb sisendivoo andmete baitireadBoolean()
- loeb andmeid tõeväärtuse kujulreadChar()
- loeb andmeid märkide kujulreadInt()
- loeb andmeid täisarvu kujulreadObject()
- loeb objekti sisendvoost
Näide 1: Java ObjectInputStream
Vaatame, kuidas saame ObjectInputStream
klassi kasutada klassi kirjutatud objektide lugemiseks 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(); ) ) )
Väljund
Täisarvandmed: 5 stringiandmed: see on programiz
Eespool toodud näites, oleme kasutanud readInt()
ja readObject()
meetod lugeda täisarv andmeid ja objekti andmeid faili.
Siin oleme kasutanud ObjectOutputStream
faili andmete kirjutamiseks. Seejärel lugesime failist andmeid, kasutades ObjectInputStream
.
Näide 2: Java ObjectInputStream
Vaatame veel ühte praktilist näidet,
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äljund
Koera nimi: Tysoni koeratõug: labrador
Ülaltoodud näites oleme loonud
ObjectOutputStream
nimega väljundFileOutputStream
nimega faili abilObjectInputStream
nimega sisendFileInputStream
nimega fileStream- Koeraklassi objektikoer
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
ainus seerialiseeritavaid objekte kirjutab väljundvoogu.
Muud ObjectInputStreami meetodid
Meetodid | Kirjeldused |
---|---|
available() | tagastab sisendvoos saadaoleva baitide arvu |
mark() | tähistab sisendvoos asukohta, kuhu andmed on loetud |
reset() | tagastab juhtelemendi sisendvoos punkti, kuhu märk oli seatud |
skipBytes() | jätab määratud baid sisendvoost vahele ja loobub sellest |
close() | sulgeb objekti sisendvoo |
Lisateabe saamiseks külastage Java ObjectInputStream (ametlik Java-dokumentatsioon).