Java ObjectInputStream (koos näidetega)

Selles õpetuses õpime näidete abil Java ObjectOutputStreami ja selle meetodeid.

ObjectInputStreamKlassi java.iopakett saab kasutada lugeda esemed, mis olid varem kirjutanud ObjectOutputStream.

See laiendab InputStreamabstraktset klassi.

Enne ObjectInputStreamklassi tundmaõppimist veenduge, et teaksite ObjectOutputStream klassi kohta.

ObjectInputStreami töötamine

Seda ObjectInputStreamkasutatakse peamiselt ObjectOutputStream.

Põhimõtteliselt ObjectOutputStreamteisendab 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, ObjectInputStreammis muudab voogud vastavateks objektideks. Seda tuntakse deserialiseerumisena.

Looge ObjectInputStream

Objekti sisendvoo loomiseks peame java.io.ObjectInputStreamesmalt 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 objStreamsaab seda failist objektide lugemiseks kasutada.

ObjectInputStreami meetodid

ObjectInputStreamTasemega näeb rakenduste erinevaid meetodeid sisalduse funktsioon InputStreamtasemega.

loe () meetod

  • read() - loeb sisendivoo andmete baiti
  • readBoolean() - loeb andmeid tõeväärtuse kujul
  • readChar() - loeb andmeid märkide kujul
  • readInt() - loeb andmeid täisarvu kujul
  • readObject() - loeb objekti sisendvoost

Näide 1: Java ObjectInputStream

Vaatame, kuidas saame ObjectInputStreamklassi 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 ObjectOutputStreamfaili 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

  • ObjectOutputStreamnimega väljund FileOutputStreamnimega faili abil
  • ObjectInputStreamnimega sisend FileInputStreamnimega 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 Serializableliidest. Sellepärast, et ObjectOutputStreamainus 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).

Huvitavad Artiklid...