Java ObjectOutputStream (ar piemēriem)

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

ObjectOutputStreamNo klases java.iopaketē var izmantot, lai rakstītu objektus, kas var lasīt ObjectInputStream.

Tas paplašina OutputStreamabstrakto klasi.

ObjectOutputStream darbība

Būtībā ObjectOutputStreamkodē Java objektus, izmantojot klases nosaukumu un objekta vērtības. Tādējādi tiek ģenerētas atbilstošas ​​plūsmas. Šis process ir pazīstams kā serializācija.

Šīs pārveidotās straumes var saglabāt failos un pārsūtīt starp tīkliem.

Piezīme . ObjectOutputStreamKlase raksta tikai tos objektus, kas ievieš Serializablesaskarni. Tas notiek tāpēc, ka, rakstot straumē, objekti ir jāserializē

Izveidojiet ObjectOutputStream

Lai izveidotu objekta izvades straumi, mums vispirms jāimportē java.io.ObjectOutputStreampakete. Kad pakotne ir importēta, mēs varam izveidot izvades straumi.

 // Creates a FileOutputStream where objects from ObjectOutputStream are written FileOutputStream fileStream = new FileOutputStream(String file); // Creates the ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream); 

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

ObjectOutputStream metodes

ObjectOutputStreamKlase nodrošina implementācijas dažādām metodēm prezentēt šajā OutputStreamklasē.

write () metode

  • write() - raksta datu baitu izvades straumē
  • writeBoolean() - raksta datus būla formā
  • writeChar() - raksta datus rakstzīmju formā
  • writeInt() - raksta datus vesela skaitļa formā
  • writeObject() raksta objektu izvades straumē

1. piemērs: Java ObjectOutputStream

Apskatīsim, kā mēs varam izmantot ObjectOutputStreamobjektu saglabāšanu failā un ObjectInputStreamšo objektu nolasīšanu no failiem

 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"); // Creates an ObjectOutputStream ObjectOutputStream output = new ObjectOutputStream(file); // writes objects to output stream output.writeInt(data1); output.writeObject(data2); // Reads data using the ObjectInputStream FileInputStream fileStream = new FileInputStream("file.txt"); ObjectInputStream objStream = new ObjectInputStream(fileStream); System.out.println("Integer data :" + objStream.readInt()); 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 izmantojām readInt()metodi un readObject()metodi, lai no failiem nolasītu veselu skaitli 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 ObjectOutputStream

Ņemsim vēl vienu 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 dog1 = new Dog("Tyson", "Labrador"); try ( FileOutputStream fileOut = new FileOutputStream("file.txt"); // Creates an ObjectOutputStream ObjectOutputStream objOut = new ObjectOutputStream(fileOut); // Writes objects to the output stream objOut.writeObject(dog1); // Reads the object FileInputStream fileIn = new FileInputStream("file.txt"); ObjectInputStream objIn = new ObjectInputStream(fileIn); // Reads the objects Dog newDog = (Dog) objIn.readObject(); System.out.println("Dog Name: " + newDog.name); System.out.println("Dog Breed: " + newDog.breed); objOut.close(); objIn.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

  • ObjectOutputStreamnosauktais objOut, izmantojot FileOutputStreamnosaukto fileOut
  • ObjectInputStreamnosauktais objIn, izmantojot FileInputStreamnosaukto fileIn.
  • Objektu suns1 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īgie raksta objekti, kurus var sērijveidot izvades straumē.

Citas ObjectOutputStream metodes

Metodes Apraksti
flush() notīra visus datus no izvades straumes
drain() visus buferētos datus ievieto izvades straumē
close() aizver izvades straumi

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

Interesanti raksti...