Š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 straumesreadBoolean()- 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, izmantojotFileOutputStreamnosaukto failuObjectInputStreamnosaukto ievadi, izmantojotFileInputStreamnosaukto 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).








