Java ObjectInputStream (med exempel)

I den här handledningen lär vi oss om Java ObjectOutputStream och dess metoder med hjälp av exempel.

Paketets ObjectInputStreamklass java.iokan användas för att läsa objekt som tidigare har skrivits av ObjectOutputStream.

Det utvidgar den InputStreamabstrakta klassen.

Innan du lär dig mer om ObjectInputStreamklassen, se till att du känner till ObjectOutputStream-klassen.

Arbeta med ObjectInputStream

Den ObjectInputStreamanvänds främst för att läsa data skrivna av ObjectOutputStream.

I grund och botten ObjectOutputStreamkonverterar Java-objekt till motsvarande strömmar. Detta kallas för serialisering. De konverterade strömmarna kan lagras i filer eller överföras via nätverk.

Nu, om vi behöver läsa dessa objekt, kommer vi att använda det ObjectInputStreamsom kommer att konvertera strömmarna tillbaka till motsvarande objekt. Detta kallas deserialisering.

Skapa en ObjectInputStream

För att skapa en objektinmatningsström måste vi först importera java.io.ObjectInputStreampaketet. När vi väl har importerat paketet kan du skapa en ingångsström här.

 // 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 exemplet ovan har vi skapat en objektingångsström med namnet objStream som är länkad till filingångsströmmen med namnet fileStream.

Nu kan den objStreamanvändas för att läsa objekt från filen.

Metoder för ObjectInputStream

Den ObjectInputStreamklass erbjuder implementeringar av olika metoder presenterar i InputStreamklassen.

läs () Metod

  • read() - läser en byte med data från ingångsströmmen
  • readBoolean() - läser data i boolesk form
  • readChar() - läser data i teckenform
  • readInt() - läser data i heltal
  • readObject() - läser objektet från ingångsströmmen

Exempel 1: Java ObjectInputStream

Låt oss se hur vi kan använda ObjectInputStreamklassen för att läsa objekt skrivna 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(); ) ) ) 

Produktion

 Heltalsdata: 5 Strängdata: Detta är programiz 

I exemplet ovan har vi använt metoden readInt()och readObject()för att läsa heltal och objektdata från filen.

Här har vi använt för ObjectOutputStreamatt skriva data till filen. Vi läser sedan data från filen med hjälp av ObjectInputStream.

Exempel 2: Java ObjectInputStream

Låt oss se ett annat praktiskt exempel,

 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

 Hundnamn: Tyson Hundras: Labrador 

I exemplet ovan har vi skapat

  • ObjectOutputStreamnamngiven utgång med den FileOutputStreamnamngivna filen
  • ObjectInputStreamnamngiven ingång med FileInputStreamnamnet fileStream
  • En objekthund i hundklassen

Här har vi sedan använt objektets utgångsström för att skriva objektet till filen. Och objektets inmatningsström för att läsa objektet från filen.

Obs! Hundklassen implementerar Serializablegränssnittet. Det beror på att den ObjectOutputStreamenda skriver de serieiserbara objekten till utdataströmmen.

Andra metoder för ObjectInputStream

Metoder Beskrivningar
available() returnerar det tillgängliga antalet byte i ingångsströmmen
mark() markerar positionen i ingångsströmmen till vilken data har lästs
reset() återgår kontrollen till den punkt i ingångsströmmen där märket sattes
skipBytes() hoppar över och kasserar de angivna byten från ingångsströmmen
close() stänger objektets inmatningsström

För att lära dig mer, besök Java ObjectInputStream (officiell Java-dokumentation).

Intressanta artiklar...