I denne vejledning lærer vi om Java ObjectOutputStream og dens metoder ved hjælp af eksempler.
Den ObjectInputStream
klasse af java.io
pakken kan bruges til at læse objekter, der tidligere blev skrevet af ObjectOutputStream
.
Det udvider den InputStream
abstrakte klasse.
Før du lærer om ObjectInputStream
klassen, skal du sørge for at kende til ObjectOutputStream-klassen.
Arbejde med ObjectInputStream
Den ObjectInputStream
bruges hovedsageligt til at læse data skrevet af ObjectOutputStream
.
Dybest set ObjectOutputStream
konverterer Java-objekter til tilsvarende strømme. Dette er kendt som serialisering. Disse konverterede streams kan gemmes i filer eller overføres via netværk.
Nu, hvis vi har brug for at læse disse objekter, bruger vi den ObjectInputStream
, der konverterer strømme tilbage til tilsvarende objekter. Dette er kendt som deserialisering.
Opret en ObjectInputStream
For at oprette en objektinputstrøm skal vi først importere java.io.ObjectInputStream
pakken. Når vi først har importeret pakken, kan du oprette en inputstrø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 ovenstående eksempel har vi oprettet en objektinputstrøm med navnet objStream, der er knyttet til filinputstrømmen med navnet fileStream.
Nu objStream
kan den bruges til at læse objekter fra filen.
Metoder til ObjectInputStream
Den ObjectInputStream
klasse giver implementeringer af forskellige metoder præsentere i InputStream
klasse.
læs () Metode
read()
- læser en byte af data fra inputstrømmenreadBoolean()
- læser data i boolsk formreadChar()
- læser data i karakterformreadInt()
- læser data i heltal formreadObject()
- læser objektet fra inputstrømmen
Eksempel 1: Java ObjectInputStream
Lad os se, hvordan vi kan bruge ObjectInputStream
klassen til at læse objekter skrevet af 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(); ) ) )
Produktion
Heltalsdata: 5 Stringdata: Dette er programiz
I ovenstående eksempel har vi brugt readInt()
og readObject()
metode til at læse heltal data og objekt data fra filen.
Her har vi brugt den ObjectOutputStream
til at skrive data til filen. Vi læser derefter dataene fra filen ved hjælp af ObjectInputStream
.
Eksempel 2: Java ObjectInputStream
Lad os se et andet 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(); ) ) )
Produktion
Hundens navn: Tyson Hunderace: Labrador
I ovenstående eksempel har vi oprettet
ObjectOutputStream
navngivet output ved hjælp af denFileOutputStream
navngivne filObjectInputStream
navngivet input ved hjælp af denFileInputStream
navngivne fileStream- En objekthund af 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 Serializable
grænsefladen. Det er fordi den ObjectOutputStream
eneste skriver de serialiserbare objekter til outputstrømmen.
Andre metoder til ObjectInputStream
Metoder | Beskrivelser |
---|---|
available() | returnerer det tilgængelige antal bytes i inputstrømmen |
mark() | markerer positionen i inputstrømmen, op til hvilken data er blevet læst |
reset() | returnerer kontrolelementet til det punkt i inputstrømmen, hvor mærket blev sat |
skipBytes() | springer og kasserer de specificerede bytes fra inputstrømmen |
close() | lukker objektets inputstrøm |
For at lære mere, besøg Java ObjectInputStream (officiel Java-dokumentation).