I denne vejledning lærer vi om Java ObjectOutputStream og dens metoder ved hjælp af eksempler.
Den ObjectOutputStream
klasse af java.io
pakken kan bruges til at skrive objekter, der kan læses af ObjectInputStream
.
Det udvider den OutputStream
abstrakte klasse.
Arbejde med ObjectOutputStream
Dybest set ObjectOutputStream
koder 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 : ObjectOutputStream
Klassen skriver kun de objekter, der implementerer Serializable
græ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.ObjectOutputStream
pakken. 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 ObjectOutputStream
klasse giver implementeringer for forskellige metoder præsentere i OutputStream
klasse.
skriv () metode
write()
- skriver en byte af data til outputstrømmenwriteBoolean()
- skriver data i boolsk formwriteChar()
- skriver data i karakterformwriteInt()
- skriver data i heltalwriteObject()
- skriver objekt til outputstrømmen
Eksempel 1: Java ObjectOutputStream
Lad os se, hvordan vi kan bruge ObjectOutputStream
til at gemme objekter i en fil og ObjectInputStream
til 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 ObjectOutputStream
til 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
ObjectOutputStream
navngivet objOut ved hjælp af denFileOutputStream
navngivne fileOutObjectInputStream
navngivet objIn ved hjælp af denFileInputStream
navngivne 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 Serializable
grænsefladen. Det er fordi den ObjectOutputStream
eneste 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).