Šajā apmācībā mēs uzzināsim par Java ObjectOutputStream un tā metodēm ar piemēru palīdzību.
Iepakojuma ObjectInputStream
klasi java.io
var izmantot, lai lasītu objektus, kurus iepriekš bija uzrakstījis ObjectOutputStream
.
Tas paplašina InputStream
abstrakto klasi.
Pirms uzzināt par ObjectInputStream
klasi, pārliecinieties, vai zināt par ObjectOutputStream klasi.
ObjectInputStream darbība
To ObjectInputStream
galvenokārt izmanto, lai nolasītu ObjectOutputStream
.
Būtībā ObjectOutputStream
Java 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, ObjectInputStream
kas 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.ObjectInputStream
pakete. 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 objStream
var izmantot objektu nolasīšanai no faila.
ObjectInputStream metodes
ObjectInputStream
Klase nodrošina implementācijas dažādu metožu prezentēt šajā InputStream
klasē.
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 ObjectInputStream
klasi, 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, ObjectOutputStream
lai 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
ObjectOutputStream
nosaukta izvade, izmantojotFileOutputStream
nosaukto failuObjectInputStream
nosaukto ievadi, izmantojotFileInputStream
nosaukto 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 Serializable
saskarni. Tas ir tāpēc, ka ObjectOutputStream
vienī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).