Šajā apmācībā mēs uzzināsim par Java ObjectOutputStream un tā metodēm ar piemēru palīdzību.
ObjectOutputStream
No klases java.io
paketē var izmantot, lai rakstītu objektus, kas var lasīt ObjectInputStream
.
Tas paplašina OutputStream
abstrakto klasi.
ObjectOutputStream darbība
Būtībā ObjectOutputStream
kodē 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 . ObjectOutputStream
Klase raksta tikai tos objektus, kas ievieš Serializable
saskarni. 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.ObjectOutputStream
pakete. 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
ObjectOutputStream
Klase nodrošina implementācijas dažādām metodēm prezentēt šajā OutputStream
klasē.
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 ObjectOutputStream
objektu 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, ObjectOutputStream
lai 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
ObjectOutputStream
nosauktais objOut, izmantojotFileOutputStream
nosaukto fileOutObjectInputStream
nosauktais objIn, izmantojotFileInputStream
nosaukto 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 Serializable
saskarni. Tas ir tāpēc, ka ObjectOutputStream
vienī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).