In questo tutorial impareremo a conoscere Java ObjectOutputStream e i suoi metodi con l'aiuto di esempi.
La ObjectInputStream
classe del java.io
pacchetto può essere utilizzata per leggere oggetti scritti in precedenza da ObjectOutputStream
.
Estende la InputStream
classe astratta.
Prima di conoscere la ObjectInputStream
classe, assicurati di conoscere la classe ObjectOutputStream.
Funzionamento di ObjectInputStream
Il ObjectInputStream
viene utilizzato principalmente per leggere i dati scritti dal ObjectOutputStream
.
Fondamentalmente, ObjectOutputStream
converte 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 ObjectInputStream
che 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.ObjectInputStream
prima 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, objStream
può essere utilizzato per leggere oggetti dal file.
Metodi di ObjectInputStream
La ObjectInputStream
classe fornisce implementazioni di diversi metodi presenti nella InputStream
classe.
metodo read ()
read()
- legge un byte di dati dal flusso di inputreadBoolean()
- legge i dati in forma booleanareadChar()
- legge i dati in forma di caratterireadInt()
- legge i dati in forma interareadObject()
- legge l'oggetto dal flusso di input
Esempio 1: Java ObjectInputStream
Vediamo come possiamo usare la ObjectInputStream
classe per leggere gli oggetti scritti dalla ObjectOutputStream
classe.
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 ObjectOutputStream
per 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
ObjectOutputStream
output denominato utilizzando ilFileOutputStream
file denominatoObjectInputStream
input denominato utilizzando ilFileInputStream
fileStream 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' Serializable
interfaccia. È perché l' ObjectOutputStream
unico 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).