I denne opplæringen vil vi lære om Java ObjectOutputStream og dens metoder ved hjelp av eksempler.
Den ObjectInputStream
klassen av java.io
pakken kan brukes til å lese objekter som tidligere ble skrevet av ObjectOutputStream
.
Det utvider den InputStream
abstrakte klassen.
Før du lærer om ObjectInputStream
klassen, må du sørge for at du vet om ObjectOutputStream-klassen.
Arbeid med ObjectInputStream
Den ObjectInputStream
brukes hovedsakelig til å lese data skrevet av ObjectOutputStream
.
I utgangspunktet ObjectOutputStream
konverterer 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 ObjectInputStream
som 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.ObjectInputStream
pakken. 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.
Nå objStream
kan den brukes til å lese objekter fra filen.
Metoder for ObjectInputStream
Den ObjectInputStream
klasse gir implementeringer av forskjellige metoder som er tilstede i den InputStream
klassen.
les () Metode
read()
- leser en byte med data fra inngangsstrømmenreadBoolean()
- leser data i boolsk formreadChar()
- leser data i karakterformreadInt()
- leser data i heltallreadObject()
- leser objektet fra inngangsstrømmen
Eksempel 1: Java ObjectInputStream
La oss se hvordan vi kan bruke ObjectInputStream
klassen til å lese objekter skrevet av ObjectOutputStream
klassen.
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
ObjectOutputStream
navngitt utgang ved hjelp av denFileOutputStream
navngitte filenObjectInputStream
navngitt inngang ved hjelp av denFileInputStream
navngitte 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 Serializable
grensesnittet. Det er fordi den ObjectOutputStream
eneste 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).