Java ObjectOutputStream (con esempi)

In questo tutorial impareremo a conoscere Java ObjectOutputStream e i suoi metodi con l'aiuto di esempi.

La ObjectOutputStreamclasse del java.iopacchetto può essere utilizzata per scrivere oggetti che possono essere letti da ObjectInputStream.

Estende la OutputStreamclasse astratta.

Funzionamento di ObjectOutputStream

Fondamentalmente, ObjectOutputStreamcodifica gli oggetti Java utilizzando il nome della classe ei valori dell'oggetto. E quindi genera flussi corrispondenti. Questo processo è noto come serializzazione.

Questi flussi convertiti possono essere archiviati in file e possono essere trasferiti tra le reti.

Nota : la ObjectOutputStreamclasse scrive solo quegli oggetti che implementano l' Serializableinterfaccia. Questo perché gli oggetti devono essere serializzati durante la scrittura nel flusso

Crea un ObjectOutputStream

Per creare un flusso di output dell'oggetto, dobbiamo java.io.ObjectOutputStreamprima importare il pacchetto. Una volta importato il pacchetto, ecco come creare un flusso di output.

 // Creates a FileOutputStream where objects from ObjectOutputStream are written FileOutputStream fileStream = new FileOutputStream(String file); // Creates the ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream); 

Nell'esempio precedente, abbiamo creato un flusso di output dell'oggetto denominato objStream che è collegato al flusso di output del file denominato fileStream.

Metodi di ObjectOutputStream

La ObjectOutputStreamclasse fornisce implementazioni per diversi metodi presenti nella OutputStreamclasse.

metodo write ()

  • write() - scrive un byte di dati nel flusso di output
  • writeBoolean() - scrive i dati in forma booleana
  • writeChar() - scrive i dati in forma di caratteri
  • writeInt() - scrive i dati in forma intera
  • writeObject() - scrive l'oggetto nel flusso di output

Esempio 1: Java ObjectOutputStream

Vediamo come possiamo usare ObjectOutputStreamper memorizzare oggetti in un file e ObjectInputStreamper leggere quegli oggetti dai file

 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(); ) ) ) 

Produzione

 Dati interi: 5 Dati stringa: Questo è programiz 

Nell'esempio precedente, abbiamo utilizzato il readInt()metodo e il readObject()metodo per leggere dati interi e dati oggetto dai file.

Qui abbiamo usato ObjectOutputStreamper scrivere dati nel file. Quindi leggiamo i dati dal file utilizzando l'estensione ObjectInputStream.

Esempio 2: Java ObjectOutputStream

Facciamo un altro esempio,

 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(); ) ) ) 

Produzione

 Nome del cane: Tyson Razza canina: Labrador 

Nell'esempio sopra, abbiamo creato

  • ObjectOutputStreamdenominato objOut utilizzando il FileOutputStreamnome fileOut
  • ObjectInputStreamdenominato objIn utilizzando il FileInputStreamfileIn denominato.
  • Un oggetto dog1 della classe Dog.

Qui, abbiamo quindi utilizzato il flusso di output dell'oggetto per scrivere l'oggetto nel file. E il flusso di input dell'oggetto per leggere l'oggetto dal file.

Nota : la classe Dog implementa l' Serializableinterfaccia. È perché l' ObjectOutputStreamunico scrive oggetti che possono essere serializzati nel flusso di output.

Altri metodi di ObjectOutputStream

Metodi Descrizioni
flush() cancella tutti i dati dal flusso di output
drain() inserisce tutti i dati memorizzati nel buffer nel flusso di output
close() chiude il flusso di output

Per saperne di più, visita Java ObjectOutputStream (documentazione Java ufficiale).

Articoli interessanti...