Java ObjectInputStream

Java Objectinputstream



'Le informazioni scritte tramite l'oggetto di un ObjectOutputStream sono accessibili principalmente utilizzando la classe ObjectInputStream. L'obiettivo principale della classe ObjectInputStream sarebbe ricostruire i dati e le entità di base che vengono prodotti utilizzando la classe ObjectOutputStream. Utilizzando un SocketStream, ObjectInputStream può anche essere impiegato per trasferire oggetti su host diversi. Pertanto, abbiamo deciso di scrivere una guida utile per il nostro sistema Ubuntu 20.04 per eliminare l'oggetto della classe objectinputstream per leggere i dati dal flusso di input del file. Cominciamo con l'apertura di una console'.

Esempio 01

A partire dal primo esempio del nostro articolo, abbiamo creato un nuovo file java, 'test.java'. Successivamente, abbiamo anche generato un file di testo nella stessa cartella.







Per leggere gli oggetti del flusso di input in un programma java, è necessario importare il flusso di output. Quindi, all'inizio abbiamo importato i pacchetti 'java.io.ObjectInputStream' e 'java.io.ObjectOutputStream'. Insieme a ciò, per inserire i dati in un file, dobbiamo importare 'java.io.FileInputStream' e 'java.io.FileInputStream'. Abbiamo creato una classe 'Main' contenente una singola funzione main().



L'esecuzione della funzione parte dalla dichiarazione di una variabile intera “d”. Per evitare l'uscita improvvisa del programma a causa di errori, abbiamo aggiunto l'istruzione try-catch di java. La parte 'try' inizia con l'inizializzazione di un oggetto flusso di output file 'f' tramite la classe FileOutputStream. Abbiamo passato il nome del file “new.txt” a questo oggetto “f”. Abbiamo creato un Object Output Stream 'o' e passato l'oggetto file 'f' alla classe ObjectOutputStream per trasformare un file in un flusso di output.



Nella riga successiva, abbiamo chiamato la funzione writeInt() del flusso di output Java tramite l'oggetto flusso di output 'o' per passargli una variabile intera 'd', cioè per salvarla in un file. Alla riga 12, abbiamo creato il flusso di input del file 'fs' utilizzando la classe FileInputStream di java passandogli un file 'new.txt', ovvero contiene già dei dati. Questo oggetto flusso di input di file 'fs' è stato passato all'oggetto 'os' appena generato della classe ObjectInputStream per consentire la lettura dal flusso di file. La funzione println() dal pacchetto 'System.out' di java è stata eliminata per chiamare la funzione readInt() tramite l'oggetto flusso di input dell'oggetto 'os' per visualizzare i dati dal file new.txt. Successivamente, abbiamo chiuso il flusso di output e il flusso di input utilizzando i rispettivi oggetti 'o' e 'os' utilizzando la funzione 'chiudi' della gestione dei file in java. Questo è un passaggio necessario per chiudere i flussi in modo che nessun altro utente possa inserire o emettere dati da un file. All'interno dell'istruzione catch(), abbiamo utilizzato la funzione getStackTrace() per ottenere un errore e visualizzarlo sullo schermo tramite la variabile Exception 'e'. Questo programma è pronto per l'esecuzione sulla shell.





Avevamo appena salvato il nostro file di codice java prima della sua esecuzione e utilizzato l'istruzione della parola chiave java per eseguire il file 'test.java'. Non restituisce nulla in cambio. Inoltre, la visualizzazione dei dati di un file di testo 'new.txt' sulla shell utilizzando l'istruzione 'cat' mostrava un valore spazzatura. Questo perché, la maggior parte delle volte, l'esecutore java non è in grado di leggere il valore intero dal file. Ma molto probabilmente, visualizzerà il valore intero esatto.



Controllando il file new.txt aprendolo manualmente, abbiamo visto che nel file è stato mostrato un formato Unicode del valore.

Se non sei in grado di visualizzare il valore intero dal flusso di file, puoi utilizzare la funzione writeObject() nel programma java invece della funzione writeInt() per scrivere il valore 'd' nel flusso di file tramite l'oggetto 'o' come visualizzato. Insieme a ciò, è necessario eliminare la funzione 'readObject()' anziché la funzione readInt() per visualizzare i dati dal flusso di input del file.

L'aggiornamento di questo codice visualizzerebbe il valore intero durante l'esecuzione.

Esempio 02

Diamo un altro valore alla programmazione java per eliminare il flusso di input dell'oggetto per il valore del tipo di stringa. Pertanto, abbiamo avviato questo codice di esempio con l'importazione delle stesse classi FileInputStream, FileOutputStream, ObjectInputStream e ObjectOutputStream di java dal pacchetto 'io' della libreria java. La classe Main ha la sua funzione main() per avviare l'esecuzione di questo codice. Una variabile stringa “d2” viene inizializzata con un valore di stringa lunga.

La stessa istruzione try-catch è stata eliminata per evitare l'errore e per un'esecuzione regolare di questo codice java. L'oggetto 'f' per il flusso di output del file è stato creato tramite la classe FileOutputStream prendendo 'new.txt' come argomento. L'oggetto flusso di output del file 'f' è stato passato all'oggetto flusso di output 'o' che è stato creato mediante l'uso della classe ObjectOutputStream. Ora, il flusso di output 'o' ha chiamato la funzione writeObject() passandole una variabile stringa 'd' da scrivere nel file 'new.txt'.

Quindi, creato un flusso di input di file 'fs' utilizzando la classe FileInputStream passandogli un nome file 'new.txt', ovvero per leggere i dati da esso. Ora, l'oggetto classe ObjectInputStream 'os' utilizzerà l'oggetto flusso di input file 'fs' per leggere i dati utilizzando la funzione readObject() di java nell'istruzione di esecuzione 'println' della classe 'System.out'. Quindi, tendiamo a chiudere i flussi di input e output chiamando la funzione 'close' e l'istruzione catch viene utilizzata per ottenere eventuali eccezioni che si sono verificate nella parte try ed evitare la chiusura improvvisa dell'esecuzione di questo programma.

L'esecuzione di questo file di codice java e del file di testo ha visualizzato il valore della stringa sulla console.

Conclusione

L'uso della classe ObjectInputStream è l'unico metodo disponibile per la lettura di sostanze che utilizzano il protocollo Serializable o Externalizable. Per riassumere, abbiamo incluso tutti i dettagli necessari per utilizzare la classe objectinputstream di Java per leggere i dati dal flusso di input dell'oggetto file. Per questo, abbiamo lanciato due diversi esempi di codice java qui. Il primo esempio utilizza il valore della variabile di input di tipo intero, mentre la seconda illustrazione ha eliminato il valore della variabile stringa, ovvero letto dal flusso del file di input.