In questo tutorial impareremo a conoscere Java ObjectOutputStream e i suoi metodi con l'aiuto di esempi.
La ObjectOutputStream
classe del java.io
pacchetto può essere utilizzata per scrivere oggetti che possono essere letti da ObjectInputStream
.
Estende la OutputStream
classe astratta.
Funzionamento di ObjectOutputStream
Fondamentalmente, ObjectOutputStream
codifica 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 ObjectOutputStream
classe scrive solo quegli oggetti che implementano l' Serializable
interfaccia. 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.ObjectOutputStream
prima 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 ObjectOutputStream
classe fornisce implementazioni per diversi metodi presenti nella OutputStream
classe.
metodo write ()
write()
- scrive un byte di dati nel flusso di outputwriteBoolean()
- scrive i dati in forma booleanawriteChar()
- scrive i dati in forma di caratteriwriteInt()
- scrive i dati in forma interawriteObject()
- scrive l'oggetto nel flusso di output
Esempio 1: Java ObjectOutputStream
Vediamo come possiamo usare ObjectOutputStream
per memorizzare oggetti in un file e ObjectInputStream
per 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 ObjectOutputStream
per 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
ObjectOutputStream
denominato objOut utilizzando ilFileOutputStream
nome fileOutObjectInputStream
denominato objIn utilizzando ilFileInputStream
fileIn 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' Serializable
interfaccia. È perché l' ObjectOutputStream
unico 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).