Java ObjectInputStream (med eksempler)

I denne vejledning lærer vi om Java ObjectOutputStream og dens metoder ved hjælp af eksempler.

Den ObjectInputStreamklasse af java.iopakken kan bruges til at læse objekter, der tidligere blev skrevet af ObjectOutputStream.

Det udvider den InputStreamabstrakte klasse.

Før du lærer om ObjectInputStreamklassen, skal du sørge for at kende til ObjectOutputStream-klassen.

Arbejde med ObjectInputStream

Den ObjectInputStreambruges hovedsageligt til at læse data skrevet af ObjectOutputStream.

Dybest set ObjectOutputStreamkonverterer 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.ObjectInputStreampakken. 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 objStreamkan den bruges til at læse objekter fra filen.

Metoder til ObjectInputStream

Den ObjectInputStreamklasse giver implementeringer af forskellige metoder præsentere i InputStreamklasse.

læs () Metode

  • read() - læser en byte af data fra inputstrømmen
  • readBoolean() - læser data i boolsk form
  • readChar() - læser data i karakterform
  • readInt() - læser data i heltal form
  • readObject() - læser objektet fra inputstrømmen

Eksempel 1: Java ObjectInputStream

Lad os se, hvordan vi kan bruge ObjectInputStreamklassen til at læse objekter skrevet af 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(); ) ) ) 

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 ObjectOutputStreamtil 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

  • ObjectOutputStreamnavngivet output ved hjælp af den FileOutputStreamnavngivne fil
  • ObjectInputStreamnavngivet input ved hjælp af den FileInputStreamnavngivne 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 Serializablegrænsefladen. Det er fordi den ObjectOutputStreameneste 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).

Interessante artikler...