Java ObjectOutputStream (med exempel)

I denna handledning lär vi oss om Java ObjectOutputStream och dess metoder med hjälp av exempel.

Paketets ObjectOutputStreamklass java.iokan användas för att skriva objekt som kan läsas av ObjectInputStream.

Det utvidgar den OutputStreamabstrakta klassen.

Arbeta med ObjectOutputStream

I grund och botten ObjectOutputStreamkodar 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 ObjectOutputStreamklass skriver endast de objekt som implementerar Serializablegrä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.ObjectOutputStreampaketet. 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 ObjectOutputStreamklass erbjuder implementeringar för olika metoder att presentera i OutputStreamklassen.

skriv () Metod

  • write() - skriver en byte av data till utdataströmmen
  • writeBoolean() - skriver data i boolesk form
  • writeChar() - skriver data i karaktärsform
  • writeInt() - skriver data i heltal
  • writeObject() - skriver objekt till utdataströmmen

Exempel 1: Java ObjectOutputStream

Låt oss se hur vi kan använda för ObjectOutputStreamatt lagra objekt i en fil och ObjectInputStreamlä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 ObjectOutputStreamatt 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

  • ObjectOutputStreamheter objOut med FileOutputStreamnamnet fileOut
  • ObjectInputStreamnamngiven objIn med FileInputStreamnamnet 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 Serializablegränssnittet. Det beror på att de ObjectOutputStreamenda 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).

Intressanta artiklar...