Java ObjectOutputStream (med eksempler)

I denne vejledning lærer vi om Java ObjectOutputStream og dens metoder ved hjælp af eksempler.

Den ObjectOutputStreamklasse af java.iopakken kan bruges til at skrive objekter, der kan læses af ObjectInputStream.

Det udvider den OutputStreamabstrakte klasse.

Arbejde med ObjectOutputStream

Dybest set ObjectOutputStreamkoder Java-objekter ved hjælp af klassens navn og objektværdier. Og genererer dermed tilsvarende strømme. Denne proces kaldes serialisering.

Disse konverterede streams kan gemmes i filer og kan overføres mellem netværk.

Bemærk : ObjectOutputStreamKlassen skriver kun de objekter, der implementerer Serializablegrænsefladen. Dette skyldes, at objekter skal serieiseres, mens de skrives til streamen

Opret en ObjectOutputStream

For at oprette en objektudgangsstrøm skal vi først importere java.io.ObjectOutputStreampakken. Når vi først har importeret pakken, kan du oprette en outputstrøm her.

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

I ovenstående eksempel har vi oprettet en objektudgangsstrøm med navnet objStream, der er knyttet til filoutputstrømmen med navnet fileStream.

Metoder til ObjectOutputStream

Den ObjectOutputStreamklasse giver implementeringer for forskellige metoder præsentere i OutputStreamklasse.

skriv () metode

  • write() - skriver en byte af data til outputstrømmen
  • writeBoolean() - skriver data i boolsk form
  • writeChar() - skriver data i karakterform
  • writeInt() - skriver data i heltal
  • writeObject() - skriver objekt til outputstrømmen

Eksempel 1: Java ObjectOutputStream

Lad os se, hvordan vi kan bruge ObjectOutputStreamtil at gemme objekter i en fil og ObjectInputStreamtil at læse disse objekter fra filerne

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

Produktion

 Heltalsdata: 5 Stringdata: Dette er programiz 

I ovenstående eksempel har vi brugt readInt()metoden og readObject()metoden til at læse et heltal og objektdata fra filerne.

Her har vi brugt den ObjectOutputStreamtil at skrive data til filen. Vi læser derefter dataene fra filen ved hjælp af ObjectInputStream.

Eksempel 2: Java ObjectOutputStream

Lad os tage et andet eksempel,

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

Produktion

 Hundens navn: Tyson Hunderace: Labrador 

I ovenstående eksempel har vi oprettet

  • ObjectOutputStreamnavngivet objOut ved hjælp af den FileOutputStreamnavngivne fileOut
  • ObjectInputStreamnavngivet objIn ved hjælp af den FileInputStreamnavngivne fileIn.
  • En objekthund1 i hundeklassen.

Her har vi derefter brugt objektets outputstrøm til at skrive objektet til filen. Og objektets inputstrøm for at læse objektet fra filen.

Bemærk : Hundeklassen implementerer Serializablegrænsefladen. Det er fordi den ObjectOutputStreameneste skriver objekter, der kan serialiseres til outputstrømmen.

Andre metoder til ObjectOutputStream

Metoder Beskrivelser
flush() rydder alle data fra outputstrømmen
drain() placerer alle de buffrede data i outputstrømmen
close() lukker outputstrømmen

For at lære mere, besøg Java ObjectOutputStream (officiel Java-dokumentation).

Interessante artikler...