Java ObjectOutputStream (med eksempler)

I denne opplæringen vil vi lære om Java ObjectOutputStream og dens metoder ved hjelp av eksempler.

Den ObjectOutputStreamklassen av java.iopakken kan brukes til å skrive objekter som kan leses av ObjectInputStream.

Det utvider den OutputStreamabstrakte klassen.

Arbeid med ObjectOutputStream

I utgangspunktet ObjectOutputStreamkoder Java-objekter ved hjelp av klassenavn og objektverdier. Og genererer dermed tilsvarende strømmer. Denne prosessen er kjent som serialisering.

Disse konverterte strømmer kan lagres i filer og kan overføres mellom nettverk.

Merk : ObjectOutputStreamKlassen skriver bare de objektene som implementerer Serializablegrensesnittet. Dette er fordi objekter må serialiseres mens du skriver til strømmen

Opprett en ObjectOutputStream

For å lage en objektutgangsstrøm, må vi først importere java.io.ObjectOutputStreampakken. Når vi har importert pakken, kan du lage en utgangsstrø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 eksemplet ovenfor har vi opprettet en objektutgangsstrøm med navnet objStream som er knyttet til filutgangsstrømmen med navnet fileStream.

Metoder for ObjectOutputStream

Den ObjectOutputStreamklasse gir implementeringer for forskjellige metoder for å medføre i OutputStreamklassen.

skriv () Metode

  • write() - skriver en byte med data til utgangsstrømmen
  • writeBoolean() - skriver data i boolsk form
  • writeChar() - skriver data i karakterform
  • writeInt() - skriver data i heltall
  • writeObject() - skriver objekt til utgangsstrømmen

Eksempel 1: Java ObjectOutputStream

La oss se hvordan vi kan bruke ObjectOutputStreamtil å lagre objekter i en fil og ObjectInputStreamlese disse objektene fra filene

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

Produksjon

 Heltalldata: 5 Strengdata: Dette er programiz 

I eksemplet ovenfor har vi brukt readInt()metoden og readObject()metoden til å lese et heltallsdata og objektdata fra filene.

Her har vi brukt til ObjectOutputStreamå skrive data til filen. Vi leser deretter dataene fra filen ved hjelp av ObjectInputStream.

Eksempel 2: Java ObjectOutputStream

La oss ta et annet 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(); ) ) ) 

Produksjon

 Hundenavn: Tyson Hunderase: Labrador 

I eksemplet ovenfor har vi opprettet

  • ObjectOutputStreamkalt objOut ved hjelp av den FileOutputStreamnavngitte fileOut
  • ObjectInputStreamkalt objIn ved hjelp av den FileInputStreamvalgte filenIn.
  • En objekthund1 av hundeklassen.

Her har vi deretter brukt objektets utgangsstrøm til å skrive objektet til filen. Og inngangsstrømmen for å lese objektet fra filen.

Merk : Hundeklassen implementerer Serializablegrensesnittet. Det er fordi de ObjectOutputStreameneste skriver objektene som kan serialiseres til utgangsstrømmen.

Andre metoder for ObjectOutputStream

Metoder Beskrivelser
flush() sletter alle dataene fra utgangsstrømmen
drain() setter alle bufrede data i utdatastrømmen
close() lukker utgangsstrømmen

For å lære mer, besøk Java ObjectOutputStream (offisiell Java-dokumentasjon).

Interessante artikler...