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ömmenreadBoolean()- läser data i boolesk formreadChar()- läser data i teckenformreadInt()- läser data i heltalreadObject()- 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 denFileOutputStreamnamngivna filenObjectInputStreamnamngiven ingång medFileInputStreamnamnet 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).








