Java ObjectInputStream

Java Objectinputstream



'Information skrevet via objektet i en ObjectOutputStream tilgås primært ved hjælp af ObjectInputStream-klassen. Hovedformålet med ObjectInputStream-klassen ville være at rekonstruere de grundlæggende data og entiteter, der er produceret ved at anvende ObjectOutputStream-klassen. Ved at gøre brug af en SocketStream kan ObjectInputStream også bruges til at overføre objekter på tværs af forskellige værter. Derfor har vi besluttet at skrive en nyttig guide til vores Ubuntu 20.04-system for at udelukke objektinputstream-klasseobjektet for at læse data fra filinputstrømmen. Lad os starte med åbningen af ​​en konsol.'

Eksempel 01

Fra vores artikels første eksempel har vi lavet en ny java-fil, 'test.java'. Derefter genererede vi også en tekstfil i samme mappe.







For at læse objekter af inputstrømmen i et java-program skal vi importere outputstrømmen. Så vi har importeret pakkerne 'java.io.ObjectInputStream' og 'java.io.ObjectOutputStream' i starten. Sammen med det, for at indsætte dataene i en fil, skal vi importere 'java.io.FileInputStream' og 'java.io.FileInputStream'. Vi har oprettet en klasse 'Main' med en enkelt main() funktion.



Funktionsudførelsen starter fra erklæringen af ​​en heltalsvariabel 'd'. For at undgå den pludselige afslutning af programmet på grund af fejl, tilføjede vi try-catch-sætningen af ​​java. 'Prøv'-delen starter med initialiseringen af ​​et filoutputstreamobjekt 'f' via FileOutputStream-klassen. Vi har givet filnavnet 'new.txt' til dette objekt 'f'. Vi har oprettet en Object Output Stream 'o' og sendt filobjektet 'f' til ObjectOutputStream-klassen for at gøre en fil til en output-stream.



Allerede på den næste linje har vi kaldt funktionen writeInt() af Java-outputstrømmen via outputstream-objektet 'o' for at sende det en heltalsvariabel 'd', dvs. at gemme det i en fil. På linje 12 har vi oprettet filinputstrøm 'fs' ved hjælp af FileInputStream-klassen af ​​java ved at give den en fil 'new.txt', dvs. allerede har data i den. Dette filinputstrømobjekt 'fs' er blevet videregivet til det nygenererede objekt 'os' i klassen ObjectInputStream for at muliggøre læsning fra filstrømmen. Println()-funktionen fra 'System.out'-pakken i java'en er blevet forkastet til at kalde readInt()-funktionen via objektinput-stream-objektet 'os' for at vise dataene fra new.txt-filen. Derefter har vi lukket outputstrømmen og inputstrømmen ved hjælp af deres respektive objekter 'o' og 'os' ved hjælp af 'luk'-funktionen til filhåndtering i java. Dette er et nødvendigt trin for at lukke strømmene, så ingen anden bruger kan indtaste eller udlæse data fra en fil. I catch()-sætningen har vi brugt getStackTrace()-funktionen til at få en fejl og vise den på skærmen via undtagelsesvariablen 'e'. Dette program er klar til udførelse på skallen.





Vi havde lige gemt vores java-kodefil før dens udførelse og brugte java-nøgleordsinstruktionen til at udføre 'test.java'-filen. Det giver intet tilbage. Visning af dataene i en tekstfil 'new.txt' på skallen ved hjælp af 'cat'-instruktionen viste også en skraldværdi. Dette skyldes, at java-eksekutoren for det meste ikke er i stand til at læse heltalsværdien fra filen. Men sandsynligvis vil den vise den nøjagtige heltalsværdi.



Ved at kontrollere new.txt-filen ved manuelt at åbne den, har vi set, at et Unicode-format af værdien er blevet vist i filen.

Hvis du ikke er i stand til at vise heltalsværdien fra filstrømmen, kan du bruge funktionen writeObject() i java-programmet i stedet for funktionen writeInt() til at skrive værdien 'd' til filstrømmen via objektet 'o' som vist. Sammen med det skal du afvise 'readObject()'-funktionen i stedet for readInt()-funktionen for at vise dataene fra filinputstrømmen.

Opdatering af denne kode vil vise heltalsværdien ved udførelse.

Eksempel 02

Lad os have en anden værdi af java-programmering for at afbryde objektinputstrømmen for strengtypeværdien. Således har vi startet denne eksempelkode med import af de samme FileInputStream-, FileOutputStream-, ObjectInputStream- og ObjectOutputStream-klasser af java fra 'io'-pakken i java-biblioteket. Main-klassen har sin main()-funktion til at begynde at udføre denne kode. En strengvariabel 'd2' initialiseres med en lang strengværdi.

Den samme try-catch-sætning er blevet forkastet for at undgå fejlen og for glat udførelse af denne java-kode. Objektet 'f' for filoutputstrømmen er blevet oprettet via FileOutputStream-klassen med 'new.txt' som et argument. Filoutputstreamobjektet 'f' er blevet videregivet til outputstreamobjektet 'o', der er blevet oprettet ved brug af ObjectOutputStream-klassen. Nu har outputstrømmen 'o' kaldt funktionen writeObject() ved at sende den en strengvariabel 'd', der skal skrives i filen 'new.txt'.

Derefter oprettede du en filinputstrøm 'fs' ved hjælp af FileInputStream-klassen ved at give den et filnavn 'new.txt', dvs. for at læse dataene fra den. Nu vil ObjectInputStream-klasseobjektet 'os' bruge filinput-streamobjektet 'fs' til at læse dataene ved hjælp af readObject()-funktionen i java i 'println'-udførelsessætningen for klassen 'System.out'. Derefter har vi en tendens til at lukke input- og outputstrømmene ved at kalde 'close'-funktionen, og catch-sætningen bruges til at få eventuelle undtagelser til at være sket i try-delen og undgå den pludselige lukning af denne programkørsel.

Udførelsen af ​​denne java-kodefil og tekstfilen viste strengværdien på konsollen.

Konklusion

Brugen af ​​klassen ObjectInputStream er den eneste tilgængelige metode til at læse stoffer, der bruger protokollen Serializable eller Externalizable. For at opsummere har vi inkluderet alle de nødvendige detaljer for at bruge Javas objectinputstream-klasse til at læse data fra filobjektets input-stream. Til dette har vi castet to forskellige java-kodeeksempler her. Det første eksempel anvender den heltallige inputvariabelværdi, mens den anden illustration har fjernet strengvariabelværdien, dvs. læst fra inputfilstrømmen.