Java ObjectInputStream

Java Objectinputstream



„Informațiile scrise prin obiectul unui ObjectOutputStream sunt accesate în principal folosind clasa ObjectInputStream. Obiectivul principal al clasei ObjectInputStream ar fi reconstruirea datelor și entităților de bază care sunt produse prin folosirea clasei ObjectOutputStream. Utilizând un SocketStream, ObjectInputStream poate fi, de asemenea, folosit pentru a transfera obiecte pe diferite gazde. Prin urmare, am decis să scriem un ghid util pentru sistemul nostru Ubuntu 20.04 pentru a elimina obiectul clasei objectinputstream pentru a citi datele din fluxul de intrare a fișierului. Să începem cu deschiderea unei console.”

Exemplul 01

Începând cu primul exemplu al articolului nostru, am creat un nou fișier java, „test.java”. După aceea, am generat și un fișier text în același folder.







Pentru a citi obiectele fluxului de intrare într-un program java, trebuie să importam fluxul de ieșire. Deci, am importat pachetele „java.io.ObjectInputStream” și „java.io.ObjectOutputStream” la început. Împreună cu asta, pentru a insera datele într-un fișier, trebuie să importam „java.io.FileInputStream” și „java.io.FileInputStream”. Am creat o clasă „Main” care conține o singură funcție main().



Execuția funcției începe de la declararea unei variabile întregi „d”. Pentru a evita ieșirea bruscă a programului din cauza erorilor, am adăugat instrucțiunea try-catch a java. Partea „încercați” începe cu inițializarea unui obiect flux de ieșire fișier „f” prin clasa FileOutputStream. Am transmis numele de fișier „new.txt” acestui obiect „f”. Am creat un Object Output Stream „o” și am transmis obiectul fișier „f” clasei ObjectOutputStream pentru a face dintr-un fișier un flux de ieșire.



La următoarea linie, am apelat funcția writeInt() a fluxului de ieșire Java prin obiectul fluxului de ieșire „o” pentru a-i transmite o variabilă întreagă „d”, adică pentru a o salva într-un fișier. Pe linia 12, am creat fluxul de introducere a fișierului „fs” folosind clasa FileInputStream de java, trecându-i un fișier „new.txt”, adică, avem deja date în el. Acest obiect de flux de intrare de fișiere „fs” a fost transmis noului obiect generat „os” al clasei ObjectInputStream pentru a permite citirea din fluxul de fișiere. Funcția println() din pachetul „System.out” al java a fost eliminată pentru a apela funcția readInt() prin intermediul obiectului flux de intrare a obiectului „os” pentru a afișa datele din fișierul new.txt. După aceea, am închis fluxul de ieșire și fluxul de intrare folosind obiectele respective „o” și „os” folosind funcția „închidere” de gestionare a fișierelor în java. Acesta este un pas necesar pentru a închide fluxurile, astfel încât niciun alt utilizator să nu poată introduce sau scoate date dintr-un fișier. În cadrul instrucțiunii catch(), am folosit funcția getStackTrace() pentru a obține o eroare și a o afișa pe ecran prin variabila de excepție „e”. Acest program este gata de execuție pe shell.





Tocmai am salvat fișierul nostru de cod java înainte de execuția lui și am folosit instrucțiunea de cuvinte cheie java pentru a executa fișierul „test.java”. Nu returnează nimic în schimb. De asemenea, afișarea datelor unui fișier text „new.txt” pe shell utilizând instrucțiunea „cat” a afișat o valoare de gunoi. Acest lucru se datorează faptului că, de cele mai multe ori, executorul java nu poate citi valoarea întreagă din fișier. Dar, cel mai probabil, va afișa valoarea întreagă exactă.



La verificarea fișierului new.txt prin deschiderea manuală, am văzut că în fișier a fost afișat un format Unicode al valorii.

Dacă nu puteți afișa valoarea întreagă din fluxul de fișiere, puteți utiliza funcția writeObject() din programul java în loc de funcția writeInt() pentru a scrie valoarea „d” în fluxul de fișiere prin obiectul „o” așa cum este afișat. Împreună cu aceasta, trebuie să eliminați funcția „readObject()” în loc de funcția readInt() pentru a afișa datele din fluxul de intrare al fișierului.

Actualizarea acestui cod ar afișa valoarea întreagă la execuție.

Exemplul 02

Să avem o altă valoare a programării java pentru a elimina fluxul de intrare obiect pentru valoarea tipului șirului. Astfel, am început acest exemplu de cod cu importul acelorași clase FileInputStream, FileOutputStream, ObjectInputStream și ObjectOutputStream de java din pachetul „io” al bibliotecii java. Clasa Main are funcția sa main() pentru a începe executarea acestui cod. O variabilă șir „d2” este inițializată cu o valoare șir lungă.

Aceeași instrucțiune try-catch a fost eliminată pentru a evita eroarea și pentru o execuție ușoară a acestui cod java. Obiectul „f” pentru fluxul de ieșire a fișierului a fost creat prin clasa FileOutputStream luând „new.txt” ca argument. Obiectul flux de ieșire „f” a fost transmis obiectului flux de ieșire „o” care a fost creat prin utilizarea clasei ObjectOutputStream. Acum, fluxul de ieșire „o” a apelat funcția writeObject() trecându-i o variabilă șir „d” pentru a fi scrisă în fișierul „new.txt”.

Apoi, a creat un flux de intrare de fișier „fs” folosind clasa FileInputStream, pasând-i un nume de fișier „new.txt”, adică pentru a citi datele din acesta. Acum, obiectul clasei ObjectInputStream „os” ar folosi obiectul flux de intrare fișier „fs” pentru a citi datele folosind funcția readObject() a java în instrucțiunea de execuție „println” a clasei „System.out”. Apoi, avem tendința de a închide fluxurile de intrare și de ieșire apelând funcția „close”, iar instrucțiunea catch este utilizată pentru a obține orice excepții care au avut loc în partea de încercare și pentru a evita închiderea bruscă a execuției acestui program.

Execuția acestui fișier de cod java și fișierul text a afișat valoarea șirului pe consolă.

Concluzie

Utilizarea clasei ObjectInputStream este singura metodă disponibilă pentru citirea substanțelor care utilizează protocolul Serializable sau Externalizable. Pentru a rezuma, am inclus toate detaliile necesare pentru a utiliza clasa objectinputstream a java pentru a citi datele din fluxul de intrare obiect fișier. Pentru aceasta, am lansat două exemple diferite de cod java aici. Primul exemplu utilizează valoarea variabilei de intrare de tip întreg, în timp ce a doua ilustrație a eliminat valoarea variabilei șir, adică a citit din fluxul fișierului de intrare.