Java ObjectOutputStream (z primeri)

V tej vadnici bomo s pomočjo primerov spoznali Java ObjectOutputStream in njegove metode.

ObjectOutputStreamRazred java.iopaket se lahko uporablja za pisanje predmete, ki jih lahko prebere ObjectInputStream.

Razširja OutputStreamabstraktni razred.

Delovanje ObjectOutputStream

V bistvu ObjectOutputStreamkodira predmete Java z uporabo imena razreda in vrednosti predmeta. In zato ustvarja ustrezne tokove. Ta postopek je znan kot serializacija.

Te pretvorjene tokove lahko shranite v datoteke in jih lahko prenesete med omrežja.

Opomba : ObjectOutputStreamRazred piše samo tiste predmete, ki izvajajo Serializablevmesnik. To je zato, ker je treba pred pisanjem v tok predmete serializirati

Ustvarite ObjectOutputStream

Če želimo ustvariti izhodni tok predmeta, moramo najprej uvoziti java.io.ObjectOutputStreampaket. Ko uvozimo paket, tukaj je opisano, kako lahko ustvarimo izhodni tok.

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

V zgornjem primeru smo ustvarili izhodni tok predmeta z imenom objStream, ki je povezan z izhodnim tokom datoteke z imenom fileStream.

Metode ObjectOutputStream

ObjectOutputStreamRazred določa izvedb za različne načine predstaviti v OutputStreamrazredu.

metoda write ()

  • write() - zapisuje bajt podatkov v izhodni tok
  • writeBoolean() - zapisuje podatke v logični obliki
  • writeChar() - zapisuje podatke v obliki znaka
  • writeInt() - zapisuje podatke v celoštevilčno obliko
  • writeObject() - zapiše objekt v izhodni tok

Primer 1: Java ObjectOutputStream

Poglejmo, kako lahko uporabimo ObjectOutputStreamza shranjevanje predmetov v datoteko in ObjectInputStreamza branje teh predmetov iz datotek

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

Izhod

 Celoštevilni podatki: 5 Nizni podatki: To je programiz 

V zgornjem primeru smo uporabili readInt()metodo in readObject()metodo za branje celoštevilčnih podatkov in podatkov predmetov iz datotek.

Tu smo uporabili ObjectOutputStreamza zapis podatkov v datoteko. Nato podatke iz datoteke preberemo s pomočjo ObjectInputStream.

Primer 2: Java ObjectOutputStream

Vzemimo še en primer,

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

Izhod

 Ime psa: pasma psa Tyson: labrador 

V zgornjem primeru smo ustvarili

  • ObjectOutputStreamz imenom objOut z uporabo FileOutputStreampoimenovane datotekeOut
  • ObjectInputStreamz imenom objIn z uporabo FileInputStreamimenovane datotekeIn.
  • Predmet dog1 iz razreda Dog.

Tu smo nato uporabili izhodni tok predmeta za zapis predmeta v datoteko. In vhodni tok predmeta za branje predmeta iz datoteke.

Opomba : Razred Dog izvaja Serializablevmesnik. To je zato, ker ObjectOutputStreamedini zapisuje predmete, ki jih je mogoče serializirati v izhodni tok.

Druge metode ObjectOutputStream

Metode Opisi
flush() izbriše vse podatke iz izhodnega toka
drain() postavi vse medpomnjene podatke v izhodni tok
close() zapre izhodni tok

Če želite izvedeti več, obiščite Java ObjectOutputStream (uradna dokumentacija Java).

Zanimive Članki...