Java ObjectInputStream (ar piemēriem)

Šajā apmācībā mēs uzzināsim par Java ObjectOutputStream un tā metodēm ar piemēru palīdzību.

Iepakojuma ObjectInputStreamklasi java.iovar izmantot, lai lasītu objektus, kurus iepriekš bija uzrakstījis ObjectOutputStream.

Tas paplašina InputStreamabstrakto klasi.

Pirms uzzināt par ObjectInputStreamklasi, pārliecinieties, vai zināt par ObjectOutputStream klasi.

ObjectInputStream darbība

To ObjectInputStreamgalvenokārt izmanto, lai nolasītu ObjectOutputStream.

Būtībā ObjectOutputStreamJava objekti tiek pārveidoti par atbilstošām straumēm. To sauc par serializāciju. Šīs pārveidotās straumes var saglabāt failos vai pārsūtīt caur tīkliem.

Tagad, ja mums būs jālasa šie objekti, mēs izmantosim to, ObjectInputStreamkas straumes pārveidos atpakaļ par atbilstošiem objektiem. To sauc par deserializāciju.

Izveidojiet ObjectInputStream

Lai izveidotu objekta ievades straumi, mums vispirms ir jāimportē java.io.ObjectInputStreampakete. Pēc pakotnes importēšanas mēs varam izveidot ievades straumi.

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

Iepriekš minētajā piemērā mēs esam izveidojuši objekta ievades straumi ar nosaukumu objStream, kas ir saistīta ar faila ievades straumi ar nosaukumu fileStream.

Tagad to objStreamvar izmantot objektu nolasīšanai no faila.

ObjectInputStream metodes

ObjectInputStreamKlase nodrošina implementācijas dažādu metožu prezentēt šajā InputStreamklasē.

lasīt () Metode

  • read() - nolasa datu baitu no ievades straumes
  • readBoolean() - nolasa datus būla formā
  • readChar() - nolasa datus rakstzīmju formā
  • readInt() - nolasa datus vesela skaitļa formā
  • readObject() - nolasa objektu no ievades straumes

1. piemērs: Java ObjectInputStream

Apskatīsim, kā mēs varam izmantot ObjectInputStreamklasi, lai lasītu klases rakstītos objektus 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(); ) ) ) 

Rezultāts

 Datu veselais skaitlis: 5 virknes dati: tas ir programmiz 

Iepriekš minētajā piemērā mēs esam izmantojuši readInt()un readObject()metodi, lai no faila nolasītu veselu skaitļu datus un objektu datus.

Šeit mēs esam izmantojuši, ObjectOutputStreamlai ierakstītu datus failā. Pēc tam mēs nolasījām datus no faila, izmantojot ObjectInputStream.

2. piemērs: Java ObjectInputStream

Apskatīsim vēl vienu praktisku piemēru,

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

Rezultāts

 Suņa nosaukums: Taisona suņu šķirne: labradors 

Iepriekš minētajā piemērā mēs esam izveidojuši

  • ObjectOutputStreamnosaukta izvade, izmantojot FileOutputStreamnosaukto failu
  • ObjectInputStreamnosaukto ievadi, izmantojot FileInputStreamnosaukto fileStream
  • Objektu suns no Suņu klases

Pēc tam mēs izmantojām objekta izvades straumi, lai ierakstītu objektu failā. Objekta ievades straume objekta nolasīšanai no faila.

Piezīme : Suņu klase īsteno Serializablesaskarni. Tas ir tāpēc, ka ObjectOutputStreamvienīgais seriālizējamos objektus raksta izejas plūsmā.

Citas ObjectInputStream metodes

Metodes Apraksti
available() atgriež pieejamo baitu skaitu ievades straumē
mark() atzīmē ievades straumes pozīciju, līdz kurai dati ir nolasīti
reset() atgriež vadību tajā ievades straumes punktā, kurā tika iestatīta atzīme
skipBytes() izlaiž un izmet norādītos baitus no ievades straumes
close() aizver objekta ievades straumi

Lai uzzinātu vairāk, apmeklējiet Java ObjectInputStream (oficiālā Java dokumentācija).

Interesanti raksti...