Java ObjectInputStream

Java Objectinputstream



'La informació escrita mitjançant l'objecte d'un ObjectOutputStream s'accedeix principalment mitjançant la classe ObjectInputStream. L'objectiu principal de la classe ObjectInputStream seria reconstruir les dades bàsiques i les entitats que es produeixen utilitzant la classe ObjectOutputStream. Mitjançant l'ús d'un SocketStream, ObjectInputStream també es pot utilitzar per transferir objectes a diferents hosts. Per tant, hem decidit escriure una guia útil per al nostre sistema Ubuntu 20.04 per eliminar l'objecte de classe objectinputstream per llegir dades del flux d'entrada del fitxer. Comencem amb l'obertura d'una consola'.

Exemple 01

A partir del primer exemple del nostre article, hem estat creant un nou fitxer java, 'test.java'. Després d'això, també hem generat un fitxer de text a la mateixa carpeta.







Per llegir objectes del flux d'entrada en un programa java, hem d'importar el flux de sortida. Per tant, hem estat important els paquets 'java.io.ObjectInputStream' i 'java.io.ObjectOutputStream' al principi. Juntament amb això, per inserir les dades en un fitxer, hem d'importar 'java.io.FileInputStream' i 'java.io.FileInputStream'. Hem creat una classe 'Main' amb una única funció main().



L'execució de la funció comença des de la declaració d'una variable entera “d”. Per evitar la sortida sobtada del programa per errors, hem afegit la instrucció try-catch de java. La part 'prova' comença amb la inicialització d'un objecte de flux de sortida de fitxers 'f' mitjançant la classe FileOutputStream. Hem passat el nom de fitxer 'new.txt' a aquest objecte 'f'. Hem creat un flux de sortida d'objectes 'o' i hem passat l'objecte de fitxer 'f' a la classe ObjectOutputStream per convertir un fitxer en un flux de sortida.



A la línia següent, hem estat cridant a la funció writeInt() del flux de sortida de Java mitjançant l'objecte del flux de sortida 'o' per passar-li una variable entera 'd', és a dir, per desar-lo en un fitxer. A la línia 12, hem creat el flux d'entrada de fitxers 'fs' mitjançant la classe FileInputStream de Java passant-li un fitxer 'new.txt', és a dir, ja hi ha dades. Aquest objecte del flux d'entrada de fitxers 'fs' s'ha passat a l'objecte recent generat 'os' de la classe ObjectInputStream per permetre la lectura del flux de fitxers. La funció println() del paquet 'System.out' del java s'ha eliminat per cridar la funció readInt() mitjançant l'objecte de flux d'entrada d'objectes 'os' per mostrar les dades del fitxer new.txt. Després d'això, hem estat tancant el flux de sortida i el flux d'entrada utilitzant els seus respectius objectes 'o' i 'os' mitjançant la funció 'tancar' de gestió de fitxers a Java. Aquest és un pas necessari per tancar els fluxos de manera que cap altre usuari pugui introduir o sortir dades d'un fitxer. Dins de la instrucció catch(), hem estat utilitzant la funció getStackTrace() per obtenir un error i mostrar-lo a la pantalla mitjançant la variable d'excepció 'e'. Aquest programa està preparat per a l'execució al shell.





Acabàvem de desar el nostre fitxer de codi java abans de la seva execució i vam utilitzar la instrucció de paraula clau java per executar el fitxer 'test.java'. No retorna res a canvi. A més, mostrar les dades d'un fitxer de text 'new.txt' a l'intèrpret d'ordres mitjançant la instrucció 'cat' va mostrar un valor d'escombraries. Això es deu al fet que, la majoria de vegades, l'executor de Java no pot llegir el valor sencer del fitxer. Però molt probablement, mostrarà el valor sencer exacte.



En comprovar el fitxer new.txt obrint-lo manualment, hem vist que s'ha mostrat un format Unicode del valor al fitxer.

Si no podeu mostrar el valor sencer del flux de fitxers, podeu utilitzar la funció writeObject() al programa java en lloc de la funció writeInt() per escriure el valor 'd' al flux de fitxers mitjançant l'objecte 'o'. tal com es mostra. Juntament amb això, heu de desactivar la funció 'readObject()' en lloc de la funció readInt() per mostrar les dades del flux d'entrada del fitxer.

L'actualització d'aquest codi mostraria el valor sencer a l'execució.

Exemple 02

Tinguem un altre valor de programació Java per eliminar el flux d'entrada d'objecte per al valor del tipus de cadena. Per tant, hem iniciat aquest codi d'exemple amb la importació de les mateixes classes de Java FileInputStream, FileOutputStream, ObjectInputStream i ObjectOutputStream del paquet 'io' de la biblioteca java. La classe Main té la seva funció main() per començar a executar aquest codi. Una variable de cadena 'd2' s'inicialitza amb un valor de cadena llarg.

La mateixa instrucció try-catch s'ha eliminat per evitar l'error i per a una execució fluida d'aquest codi java. L'objecte 'f' per al flux de sortida del fitxer s'ha creat mitjançant la classe FileOutputStream prenent 'new.txt' com a argument. L'objecte del flux de sortida del fitxer 'f' s'ha passat a l'objecte del flux de sortida 'o' que s'ha creat mitjançant l'ús de la classe ObjectOutputStream. Ara, el flux de sortida 'o' ha estat cridant a la funció writeObject() passant-li una variable de cadena 'd' per escriure al fitxer 'new.txt'.

A continuació, va crear un flux d'entrada de fitxers 'fs' mitjançant la classe FileInputStream passant-li un nom de fitxer 'new.txt', és a dir, per llegir-ne les dades. Ara, l'objecte de classe ObjectInputStream 'os' faria servir l'objecte de flux d'entrada del fitxer 'fs' per llegir les dades mitjançant la funció readObject() de java a la instrucció d'execució 'println' de la classe 'System.out'. Aleshores, tendim a tancar els fluxos d'entrada i sortida cridant a la funció 'tancar', i la instrucció catch s'utilitza per aconseguir que s'hagi produït qualsevol excepció a la part de prova i evitar el tancament sobtat d'aquesta execució del programa.

L'execució d'aquest fitxer de codi Java i el fitxer de text mostraven el valor de la cadena a la consola.

Conclusió

L'ús de la classe ObjectInputStream és l'únic mètode disponible per llegir substàncies que utilitzen el protocol Serialitzable o Externalitzable. En resum, hem inclòs tots els detalls necessaris per utilitzar la classe objectinputstream de Java per llegir dades del flux d'entrada de l'objecte del fitxer. Per a això, hem estat emetent aquí dos exemples de codi Java diferents. El primer exemple utilitza el valor de la variable d'entrada de tipus enter, mentre que la segona il·lustració ha estat eliminant el valor de la variable de cadena, és a dir, llegit del flux del fitxer d'entrada.