Java ObjectInputStream

Java Objectinputstream



“Informacijama napisanim putem objekta ObjectOutputStream prvenstveno se pristupa pomoću klase ObjectInputStream. Glavni cilj klase ObjectInputStream bio bi rekonstruirati osnovne podatke i entitete koji se proizvode korištenjem klase ObjectOutputStream. Korištenjem SocketStream-a, ObjectInputStream se također može koristiti za prijenos objekata preko različitih hostova. Stoga smo odlučili napisati koristan vodič za naš Ubuntu 20.04 sustav za odbacivanje objekta klase objectinputstream za čitanje podataka iz ulaznog toka datoteke. Počnimo s otvaranjem konzole.”

Primjer 01

Počevši od prvog primjera našeg članka, stvaramo novu java datoteku, 'test.java'. Nakon toga smo također generirali tekstualnu datoteku u istoj mapi.







Za čitanje objekata ulaznog toka u java programu, moramo uvesti izlazni tok. Dakle, na početku smo uvozili pakete “java.io.ObjectInputStream” i “java.io.ObjectOutputStream”. Uz to, da bismo umetnuli podatke u datoteku, moramo uvesti 'java.io.FileInputStream' i 'java.io.FileInputStream'. Stvorili smo klasu 'Main' koja sadrži jednu funkciju main().



Izvršenje funkcije počinje od deklaracije cjelobrojne varijable “d”. Kako bismo izbjegli iznenadni izlaz iz programa zbog grešaka, dodali smo naredbu try-catch u Javi. Dio 'pokušaj' počinje inicijalizacijom objekta izlaznog toka datoteke 'f' putem klase FileOutputStream. Proslijedili smo naziv datoteke “new.txt” ovom objektu “f”. Stvorili smo izlazni tok objekta “o” i proslijedili objekt datoteke “f” klasi ObjectOutputStream da bi datoteka bila izlazni tok.



Već u sljedećem retku pozivamo funkciju writeInt() izlaznog toka Jave preko objekta izlaznog toka 'o' da bismo mu proslijedili cjelobrojnu varijablu 'd', tj. da bismo ga spremili u datoteku. U retku 12 stvorili smo ulazni tok datoteke 'fs' pomoću klase FileInputStream u Javi prosljeđujući joj datoteku 'new.txt', tj. već sadrži podatke. Ovaj objekt ulaznog toka datoteke “fs” proslijeđen je novogeneriranom objektu “os” klase ObjectInputStream kako bi se omogućilo čitanje iz toka datoteke. Funkcija println() iz paketa “System.out” u Javi je odbačena za pozivanje funkcije readInt() preko objekta ulaznog toka objekta “os” za prikaz podataka iz datoteke new.txt. Nakon toga smo zatvarali izlazni tok i ulazni tok korištenjem njihovih odgovarajućih objekata “o” i “os” koristeći funkciju “close” za rukovanje datotekama u Javi. Ovo je neophodan korak za zatvaranje tokova tako da nijedan drugi korisnik ne može unositi ili izlaziti podatke iz datoteke. Unutar izjave catch(), koristili smo funkciju getStackTrace() da dobijemo pogrešku i prikažemo je na ekranu putem varijable iznimke 'e'. Ovaj program je spreman za izvođenje u ljusci.





Upravo smo spremili datoteku s java kodom prije njezina izvođenja i upotrijebili instrukciju ključne riječi java za izvođenje datoteke 'test.java'. Ne vraća ništa zauzvrat. Također, prikazivanje podataka tekstualne datoteke 'new.txt' na ljusci pomoću instrukcije 'cat' prikazalo je vrijednost smeća. To je zato što, većinu vremena, Java izvršitelj ne može pročitati cjelobrojnu vrijednost iz datoteke. Ali najvjerojatnije će prikazati točnu vrijednost cijelog broja.



Prilikom provjere datoteke new.txt ručnim otvaranjem, vidjeli smo da je u datoteci prikazan Unicode format vrijednosti.

Ako ne možete prikazati cjelobrojnu vrijednost iz toka datoteke, možete upotrijebiti funkciju writeObject() u java programu umjesto funkcije writeInt() da biste upisali vrijednost “d” u tok datoteke putem objekta “o” kako je prikazano. Uz to, trebate odbaciti funkciju 'readObject()' umjesto funkcije readInt() za prikaz podataka iz ulaznog toka datoteke.

Ažuriranje ovog koda prikazalo bi vrijednost cijelog broja pri izvođenju.

Primjer 02

Uzmimo još jednu vrijednost java programiranja za odbacivanje ulaznog toka objekta za vrijednost vrste niza. Stoga smo započeli ovaj primjer koda s uvozom istih klasa FileInputStream, FileOutputStream, ObjectInputStream i ObjectOutputStream iz Jave iz paketa “io” biblioteke Java. Glavna klasa ima svoju funkciju main() za početak izvršavanja ovog koda. Varijabla niza 'd2' inicijalizira se dugom vrijednošću niza.

Ista naredba try-catch je odbačena kako bi se izbjegla pogreška i radi glatkog izvođenja ovog java koda. Objekt 'f' za izlazni tok datoteke stvoren je putem klase FileOutputStream koja uzima 'new.txt' kao argument. Objekt izlaznog toka datoteke “f” proslijeđen je objektu izlaznog toka “o” koji je kreiran upotrebom klase ObjectOutputStream. Sada, izlazni tok “o” poziva funkciju writeObject() prosljeđujući joj string varijablu “d” koja se upisuje u datoteku “new.txt”.

Zatim je kreiran ulazni tok datoteke 'fs' koristeći klasu FileInputStream prosljeđivanjem naziva datoteke 'new.txt', tj. za čitanje podataka iz nje. Sada bi objekt klase ObjectInputStream “os” koristio objekt ulaznog toka datoteke “fs” za čitanje podataka pomoću funkcije readObject() u Javi u izjavi o izvršavanju “println” klase “System.out”. Zatim, nastojimo zatvoriti ulazne i izlazne tokove pozivanjem funkcije 'close', a naredba catch se koristi kako bismo saznali da su se iznimke dogodile u dijelu pokušaja i izbjegli iznenadno zatvaranje ovog izvršavanja programa.

Izvršenje ove datoteke java koda i tekstualne datoteke prikazalo je vrijednost niza na konzoli.

Zaključak

Korištenje klase ObjectInputStream jedina je dostupna metoda za čitanje tvari koje koriste Serializable ili Externalizable protokol. Ukratko, uključili smo sve potrebne detalje za korištenje Javine klase objectinputstream za čitanje podataka iz ulaznog toka objekta datoteke. Za ovo smo ovdje izbacili dva različita primjera java koda. Prvi primjer koristi vrijednost varijable integer tipa, dok je druga ilustracija odbacila vrijednost varijable niza, tj. čitanje iz toka ulazne datoteke.