Java ObjectInputStream (med eksempler)

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

Den ObjectInputStreamklassen av java.iopakken kan brukes til å lese objekter som tidligere ble skrevet av ObjectOutputStream.

Det utvider den InputStreamabstrakte klassen.

Før du lærer om ObjectInputStreamklassen, må du sørge for at du vet om ObjectOutputStream-klassen.

Arbeid med ObjectInputStream

Den ObjectInputStreambrukes hovedsakelig til å lese data skrevet av ObjectOutputStream.

I utgangspunktet ObjectOutputStreamkonverterer Java-objekter til tilsvarende strømmer. Dette er kjent som serialisering. Disse konverterte strømmer kan lagres i filer eller overføres gjennom nettverk.

Nå, hvis vi trenger å lese disse objektene, vil vi bruke det ObjectInputStreamsom vil konvertere strømmer tilbake til tilsvarende objekter. Dette er kjent som deserialisering.

Opprett en ObjectInputStream

For å opprette en objektinngangsstrøm, må vi først importere java.io.ObjectInputStreampakken. Når vi har importert pakken, kan du lage en inngangsstrøm her.

 // Creates a file input stream linked with the specified file FileInputStream fileStream = new FileInputStream(String file); // Creates an object input stream using the file input stream ObjectInputStream objStream = new ObjectInputStream(fileStream); 

I eksemplet ovenfor har vi opprettet en objektinngangsstrøm kalt objStream som er koblet til filinngangsstrømmen kalt fileStream.

objStreamkan den brukes til å lese objekter fra filen.

Metoder for ObjectInputStream

Den ObjectInputStreamklasse gir implementeringer av forskjellige metoder som er tilstede i den InputStreamklassen.

les () Metode

  • read() - leser en byte med data fra inngangsstrømmen
  • readBoolean() - leser data i boolsk form
  • readChar() - leser data i karakterform
  • readInt() - leser data i heltall
  • readObject() - leser objektet fra inngangsstrømmen

Eksempel 1: Java ObjectInputStream

La oss se hvordan vi kan bruke ObjectInputStreamklassen til å lese objekter skrevet av ObjectOutputStreamklassen.

 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"); ObjectOutputStream output = new ObjectOutputStream(file); // Writing to the file using ObjectOutputStream output.writeInt(data1); output.writeObject(data2); FileInputStream fileStream = new FileInputStream("file.txt"); // Creating an object input stream ObjectInputStream objStream = new ObjectInputStream(fileStream); //Using the readInt() method System.out.println("Integer data :" + objStream.readInt()); // Using the readObject() method 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()og- readObject()metoden til å lese heltalldata og objektdata fra filen.

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

Eksempel 2: Java ObjectInputStream

La oss se et annet praktisk 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 dog = new Dog("Tyson", "Labrador"); try ( FileOutputStream file = new FileOutputStream("file.txt"); // Creates an ObjectOutputStream ObjectOutputStream output = new ObjectOutputStream(file); // Writes objects to the output stream output.writeObject(dog); FileInputStream fileStream = new FileInputStream("file.txt"); // Creates an ObjectInputStream ObjectInputStream input = new ObjectInputStream(fileStream); // Reads the objects Dog newDog = (Dog) input.readObject(); System.out.println("Dog Name: " + newDog.name); System.out.println("Dog Breed: " + newDog.breed); output.close(); input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Produksjon

 Hundenavn: Tyson Hunderase: Labrador 

I eksemplet ovenfor har vi opprettet

  • ObjectOutputStreamnavngitt utgang ved hjelp av den FileOutputStreamnavngitte filen
  • ObjectInputStreamnavngitt inngang ved hjelp av den FileInputStreamnavngitte fileStream
  • En gjenstandshund i 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 den ObjectOutputStreameneste som skriver serieobjekter til utgangsstrømmen.

Andre metoder for ObjectInputStream

Metoder Beskrivelser
available() returnerer tilgjengelig antall byte i inngangsstrømmen
mark() markerer posisjonen i inngangsstrømmen som data er lest opp til
reset() returnerer kontrollen til punktet i inngangsstrømmen der merket ble satt
skipBytes() hopper over og forkaster de spesifiserte bytene fra inngangsstrømmen
close() lukker objektets inngangsstrøm

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

Interessante artikler...