Java ObjectInputStream

Java Objectinputstream



'Informasjon skrevet via objektet til en ObjectOutputStream er først og fremst aksessert ved å bruke ObjectInputStream-klassen. Hovedmålet med ObjectInputStream-klassen vil være å rekonstruere de grunnleggende dataene og enhetene som produseres ved å bruke ObjectOutputStream-klassen. Ved å bruke en SocketStream, kan ObjectInputStream også brukes til å overføre objekter på tvers av forskjellige verter. Derfor har vi bestemt oss for å skrive en nyttig veiledning for vårt Ubuntu 20.04-system for å avvise klassen objectinputstream-objektet for å lese data fra filinndatastrømmen. La oss starte med åpningen av en konsoll.'

Eksempel 01

Med utgangspunkt i artikkelens første eksempel har vi laget en ny java-fil, 'test.java'. Etter det genererte vi også en tekstfil i samme mappe.







For å lese objekter til inngangsstrømmen i et java-program, må vi importere utdatastrømmen. Så vi har importert pakkene 'java.io.ObjectInputStream' og 'java.io.ObjectOutputStream' i starten. Sammen med det, for å sette inn dataene i en fil, må vi importere 'java.io.FileInputStream' og 'java.io.FileInputStream'. Vi har laget en klasse 'Main' som inneholder en enkelt hoved()-funksjon.



Funksjonsutførelsen starter fra deklarasjonen av en heltallsvariabel 'd'. For å unngå plutselig avslutning av programmet på grunn av feil, la vi til try-catch-setningen til java. 'Prøv'-delen starter med initialiseringen av et filutdatastrømobjekt 'f' via FileOutputStream-klassen. Vi har gitt filnavnet 'new.txt' til dette objektet 'f'. Vi har laget en Object Output Stream 'o' og sendt filobjektet 'f' til ObjectOutputStream-klassen for å gjøre en fil til en output-stream.



Helt på neste linje har vi kalt writeInt()-funksjonen til Java-utdatastrømmen via output-stream-objektet 'o' for å gi den en heltallsvariabel 'd', dvs. lagre den i en fil. På linje 12 har vi opprettet filinndatastrøm 'fs' ved å bruke FileInputStream-klassen til java ved å gi den en fil 'new.txt', dvs. allerede har data i den. Dette filinndatastrømobjektet 'fs' har blitt sendt til det nylig genererte objektet 'os' i ObjectInputStream-klassen for å muliggjøre lesing fra filstrømmen. Println()-funksjonen fra 'System.out'-pakken til java har blitt forkastet til å kalle readInt()-funksjonen via objektinndatastrømobjektet 'os' for å vise dataene fra new.txt-filen. Etter det har vi lukket utgangsstrømmen og inngangsstrømmen ved å bruke deres respektive objekter 'o' og 'os' ved å bruke 'lukk'-funksjonen til filhåndtering i java. Dette er et nødvendig skritt for å lukke strømmene slik at ingen andre brukere kan legge inn eller skrive ut data fra en fil. Innenfor catch()-setningen har vi brukt getStackTrace()-funksjonen for å få en feil og vise den på skjermen via unntaksvariabelen 'e'. Dette programmet er klart for kjøring på skallet.





Vi hadde nettopp lagret java-kodefilen vår før den ble kjørt og brukte instruksjonen for java-nøkkelordet for å kjøre 'test.java'-filen. Det gir ingenting tilbake. Visning av dataene til en tekstfil 'new.txt' på skallet ved å bruke 'cat'-instruksjonen viste også en søppelverdi. Dette er fordi java-utføreren som oftest ikke er i stand til å lese heltallsverdien fra filen. Men mest sannsynlig vil den vise den nøyaktige heltallsverdien.



Ved å sjekke new.txt-filen ved å åpne den manuelt, har vi sett at et Unicode-format med verdien har blitt vist i filen.

Hvis du ikke klarer å vise heltallsverdien fra filstrømmen, kan du bruke writeObject()-funksjonen i java-programmet i stedet for writeInt()-funksjonen for å skrive verdien 'd' til filstrømmen via objektet 'o' som vist. Sammen med det, må du forkaste 'readObject()'-funksjonen i stedet for readInt()-funksjonen for å vise dataene fra filinndatastrømmen.

Oppdatering av denne koden vil vise heltallsverdien ved kjøring.

Eksempel 02

La oss ha en annen verdi av java-programmering for å fjerne objektinndatastrømmen for strengtypeverdien. Dermed har vi startet denne eksempelkoden med import av de samme FileInputStream-, FileOutputStream-, ObjectInputStream- og ObjectOutputStream-klassene av java fra 'io'-pakken til java-biblioteket. Main-klassen har sin main()-funksjon for å begynne å kjøre denne koden. En strengvariabel 'd2' initialiseres med en lang strengverdi.

Den samme try-catch-setningen har blitt forkastet for å unngå feilen og for jevn utførelse av denne java-koden. Objektet 'f' for filutdatastrømmen er opprettet via FileOutputStream-klassen som tar 'new.txt' som et argument. Filutdatastrømobjektet 'f' er sendt til utdatastrømobjektet 'o' som er opprettet ved bruk av ObjectOutputStream-klassen. Nå har utdatastrømmen 'o' kalt skriveObject()-funksjonen ved å sende den en strengvariabel 'd' som skal skrives i filen 'new.txt'.

Deretter opprettet en filinndatastrøm 'fs' ved å bruke FileInputStream-klassen ved å gi den et filnavn 'new.txt', dvs. for å lese dataene fra den. Nå vil ObjectInputStream-klasseobjektet 'os' bruke filinndatastrømobjektet 'fs' for å lese dataene ved å bruke readObject()-funksjonen til java i 'println'-utførelsessetningen til 'System.out'-klassen. Deretter har vi en tendens til å lukke input- og output-strømmene ved å kalle 'close'-funksjonen, og catch-setningen brukes for å få eventuelle unntak som har skjedd i try-delen og unngå plutselig lukking av denne programkjøringen.

Utførelsen av denne java-kodefilen og tekstfilen viste strengverdien på konsollen.

Konklusjon

Bruken av ObjectInputStream-klassen er den eneste tilgjengelige metoden for å lese stoffer som bruker Serializable- eller Externalizable-protokollen. For å oppsummere har vi inkludert alle nødvendige detaljer for å bruke Javas objectinputstream-klasse for å lese data fra filobjektinndatastrømmen. For dette har vi castet to forskjellige java-kodeeksempler her. Det første eksemplet bruker heltallstypen for inndatavariabel, mens den andre illustrasjonen har fjernet strengvariabelverdien, dvs. lest fra inndatafilstrømmen.