Java ObjectInputStream (con esempi)

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

La ObjectInputStreamclasse del java.iopacchetto può essere utilizzata per leggere oggetti scritti in precedenza da ObjectOutputStream.

Estende la InputStreamclasse astratta.

Prima di conoscere la ObjectInputStreamclasse, assicurati di conoscere la classe ObjectOutputStream.

Funzionamento di ObjectInputStream

Il ObjectInputStreamviene utilizzato principalmente per leggere i dati scritti dal ObjectOutputStream.

Fondamentalmente, ObjectOutputStreamconverte gli oggetti Java in flussi corrispondenti. Questo è noto come serializzazione. Questi flussi convertiti possono essere archiviati in file o trasferiti tramite reti.

Ora, se abbiamo bisogno di leggere quegli oggetti, useremo il ObjectInputStreamche convertirà i flussi di nuovo negli oggetti corrispondenti. Questo è noto come deserializzazione.

Crea un ObjectInputStream

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

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

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

Ora, objStreampuò essere utilizzato per leggere oggetti dal file.

Metodi di ObjectInputStream

La ObjectInputStreamclasse fornisce implementazioni di diversi metodi presenti nella InputStreamclasse.

metodo read ()

  • read() - legge un byte di dati dal flusso di input
  • readBoolean() - legge i dati in forma booleana
  • readChar() - legge i dati in forma di caratteri
  • readInt() - legge i dati in forma intera
  • readObject() - legge l'oggetto dal flusso di input

Esempio 1: Java ObjectInputStream

Vediamo come possiamo usare la ObjectInputStreamclasse per leggere gli oggetti scritti dalla ObjectOutputStreamclasse.

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

Produzione

 Dati interi: 5 Dati stringa: Questo è programiz 

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

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

Esempio 2: Java ObjectInputStream

Vediamo un altro esempio pratico,

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

Produzione

 Nome del cane: Tyson Razza canina: Labrador 

Nell'esempio sopra, abbiamo creato

  • ObjectOutputStreamoutput denominato utilizzando il FileOutputStreamfile denominato
  • ObjectInputStreaminput denominato utilizzando il FileInputStreamfileStream denominato
  • Un cane oggetto 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 gli oggetti serializzabili nel flusso di output.

Altri metodi di ObjectInputStream

Metodi Descrizioni
available() restituisce il numero di byte disponibili nel flusso di input
mark() segna la posizione nel flusso di input fino alla quale i dati sono stati letti
reset() restituisce il controllo al punto del flusso di input in cui è stato impostato il contrassegno
skipBytes() salta e scarta i byte specificati dal flusso di input
close() chiude il flusso di input dell'oggetto

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

Articoli interessanti...