I denna handledning lär vi oss om Java ObjectOutputStream och dess metoder med hjälp av exempel.
Paketets ObjectOutputStream
klass java.io
kan användas för att skriva objekt som kan läsas av ObjectInputStream
.
Det utvidgar den OutputStream
abstrakta klassen.
Arbeta med ObjectOutputStream
I grund och botten ObjectOutputStream
kodar Java-objekt med klassnamn och objektvärden. Och genererar därmed motsvarande strömmar. Denna process kallas för serialisering.
De konverterade strömmarna kan lagras i filer och kan överföras till nätverk.
Obs : Den ObjectOutputStream
klass skriver endast de objekt som implementerar Serializable
gränssnittet. Detta beror på att objekt måste serieseras medan de skrivs till strömmen
Skapa en ObjectOutputStream
För att skapa en objektutmatningsström måste vi först importera java.io.ObjectOutputStream
paketet. När vi väl har importerat paketet, här är hur vi kan skapa en utdataström.
// Creates a FileOutputStream where objects from ObjectOutputStream are written FileOutputStream fileStream = new FileOutputStream(String file); // Creates the ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream);
I exemplet ovan har vi skapat en objektutmatningsström med namnet objStream som är länkad till filutmatningsströmmen med namnet fileStream.
Metoder för ObjectOutputStream
Den ObjectOutputStream
klass erbjuder implementeringar för olika metoder att presentera i OutputStream
klassen.
skriv () Metod
write()
- skriver en byte av data till utdataströmmenwriteBoolean()
- skriver data i boolesk formwriteChar()
- skriver data i karaktärsformwriteInt()
- skriver data i heltalwriteObject()
- skriver objekt till utdataströmmen
Exempel 1: Java ObjectOutputStream
Låt oss se hur vi kan använda för ObjectOutputStream
att lagra objekt i en fil och ObjectInputStream
läsa dessa objekt från filerna
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 Strängdata: Detta är programiz
I exemplet ovan har vi använt readInt()
metoden och readObject()
metoden för att läsa ett heltal och objektdata från filerna.
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 ObjectOutputStream
Låt oss ta ett annat 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 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
Hundnamn: Tyson Hundras: Labrador
I exemplet ovan har vi skapat
ObjectOutputStream
heter objOut medFileOutputStream
namnet fileOutObjectInputStream
namngiven objIn medFileInputStream
namnet fileIn.- Ett objekt hund1 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 de ObjectOutputStream
enda skriver objekten som kan serieseras till utdataströmmen.
Andra metoder för ObjectOutputStream
Metoder | Beskrivningar |
---|---|
flush() | rensar all data från utdataströmmen |
drain() | placerar all buffrad data i utdataströmmen |
close() | stänger utgångsströmmen |
För att lära dig mer, besök Java ObjectOutputStream (officiell Java-dokumentation).