I den här handledningen lär vi oss om Java ObjectOutputStream och dess metoder med hjälp av exempel.
Paketets ObjectInputStream
klass java.io
kan användas för att läsa objekt som tidigare har skrivits av ObjectOutputStream
.
Det utvidgar den InputStream
abstrakta klassen.
Innan du lär dig mer om ObjectInputStream
klassen, se till att du känner till ObjectOutputStream-klassen.
Arbeta med ObjectInputStream
Den ObjectInputStream
används främst för att läsa data skrivna av ObjectOutputStream
.
I grund och botten ObjectOutputStream
konverterar 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 ObjectInputStream
som 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.ObjectInputStream
paketet. 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 objStream
användas för att läsa objekt från filen.
Metoder för ObjectInputStream
Den ObjectInputStream
klass erbjuder implementeringar av olika metoder presenterar i InputStream
klassen.
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 ObjectInputStream
klassen för att läsa objekt skrivna av 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 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 ObjectOutputStream
att 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
ObjectOutputStream
namngiven utgång med denFileOutputStream
namngivna filenObjectInputStream
namngiven ingång medFileInputStream
namnet 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 Serializable
gränssnittet. Det beror på att den ObjectOutputStream
enda 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).