Java ObjectInputStream

Java Objectinputstream



„ObjectOutputStreami objekti kaudu kirjutatud teabele pääseb ligi peamiselt klassi ObjectInputStream abil. Klassi ObjectInputStream põhieesmärk oleks rekonstrueerida põhiandmed ja olemid, mis on toodetud klassi ObjectOutputStream abil. SocketStreami kasutades võib ObjectInputStreami kasutada ka objektide ülekandmiseks erinevate hostide vahel. Seetõttu oleme otsustanud kirjutada meie Ubuntu 20.04 süsteemi jaoks kasuliku juhendi, et eemaldada objektiinputstream klassi objekt, et lugeda faili sisendvoost andmeid. Alustame konsooli avamisega.

Näide 01

Alates meie artikli esimesest näitest oleme loonud uue Java-faili 'test.java'. Peale seda genereerisime samasse kausta ka tekstifaili.







Java-programmis sisendvoo objektide lugemiseks peame importima väljundvoo. Niisiis oleme alguses importinud pakette „java.io.ObjectInputStream” ja „java.io.ObjectOutputStream”. Lisaks peame andmete faili sisestamiseks importima failid 'java.io.FileInputStream' ja 'java.io.FileInputStream'. Oleme loonud klassi 'Main', mis sisaldab ühte main() funktsiooni.



Funktsiooni täitmine algab täisarvulise muutuja “d” deklareerimisest. Et vältida programmi äkilist väljumist vigade tõttu, lisasime java try-catch lause. 'Try' osa algab failiväljundi vooobjekti 'f' initsialiseerimisega FileOutputStream klassi kaudu. Oleme sellele objektile 'f' edastanud failinime 'new.txt'. Oleme loonud objekti väljundvoo “o” ja edastanud failiobjekti “f” klassi ObjectOutputStream, et muuta fail väljundvooks.



Järgmisel real oleme kutsunud Java väljundvoo funktsiooni writeInt() väljundvoo objekti 'o' kaudu, et anda sellele täisarvuline muutuja 'd', st salvestada see faili. 12. real oleme loonud failisisendvoo „fs”, kasutades Java klassi FileInputStream, edastades sellele faili „new.txt”, st selles on juba andmed. See failisisendvoo objekt 'fs' on edastatud klassi ObjectInputStream vastloodud objektile 'os', et võimaldada failivoost lugemist. Funktsioon println() Java paketist System.out on eemaldatud, et kutsuda funktsiooni readInt() objekti sisendvooobjekti „os” kaudu, et kuvada faili new.txt andmed. Pärast seda oleme sulgenud väljundvoo ja sisendvoo, kasutades nende vastavaid objekte 'o' ja 'os', kasutades Java failihalduse funktsiooni 'sulgemine'. See on vajalik samm voogude sulgemiseks, et ükski teine ​​kasutaja ei saaks faili andmeid sisestada ega väljastada. Lauses catch() oleme kasutanud funktsiooni getStackTrace(), et saada veateadet ja kuvada see ekraanile erandi muutuja “e” kaudu. See programm on kestas täitmiseks valmis.





Olime just salvestanud oma java koodifaili enne selle käivitamist ja kasutasime faili test.java käivitamiseks java märksõna käsku. See ei tagasta midagi. Samuti kuvas tekstifaili 'new.txt' andmete kuvamine kestas käsuga 'cat' prügiväärtust. Selle põhjuseks on asjaolu, et enamasti ei suuda Java täitur failist täisarvu väärtust lugeda. Kuid tõenäoliselt kuvab see täpse täisarvu väärtuse.



Faili new.txt kontrollimisel selle käsitsi avamisega nägime, et failis on näidatud väärtuse Unicode-vormingus.

Kui te ei saa failivoost täisarvu kuvada, võite kasutada java programmis funktsiooni writeObject() funktsiooni writeInt() asemel, et kirjutada failivoogu väärtus 'd' objekti 'o' kaudu. nagu kuvatakse. Lisaks peate failisisendvoost andmete kuvamiseks funktsiooni readInt () asemel välja lülitama funktsiooni 'readObject()'.

Selle koodi värskendamisel kuvatakse täitmisel täisarv.

Näide 02

Stringitüübi väärtuse objekti sisendvoo väljalülitamiseks olgu veel üks java programmeerimise väärtus. Seega oleme seda näidiskoodi alustanud samade java klasside FileInputStream, FileOutputStream, ObjectInputStream ja ObjectOutputStream importimisega java teegi paketist io. Põhiklassil on selle koodi täitmise alustamiseks funktsioon main(). Stringi muutuja 'd2' initsialiseeritakse pika stringi väärtusega.

Sama try-catch avaldus on vigade vältimiseks ja selle Java-koodi sujuvaks täitmiseks tühistatud. Faili väljundvoo objekt 'f' on loodud FileOutputStream klassi kaudu, võttes argumendiks 'new.txt'. Faili väljundvoo objekt 'f' on edastatud väljundvoo objektile 'o', mis on loodud klassi ObjectOutputStream abil. Nüüd on väljundvoog 'o' kutsunud funktsiooni writeObject(), edastades sellele stringimuutuja 'd', mis tuleb kirjutada faili 'new.txt'.

Seejärel lõi failisisendvoo 'fs', kasutades FileInputStream klassi, edastades sellele failinime 'new.txt', st andmete lugemiseks. Nüüd kasutaks ObjectInputStream klassi objekt “os” failisisendvooobjekti “fs”, et lugeda andmeid, kasutades java funktsiooni readObject() klassi “System.out” täitmislauses “println”. Seejärel kipume sisend- ja väljundvoo sulgema, kutsudes välja funktsiooni 'sulgemine', ja püüdmislauset kasutatakse prooviosas juhtunud erandite saamiseks ja selle programmi täitmise äkilise sulgemise vältimiseks.

Selle java koodifaili ja tekstifaili täitmine kuvas konsoolil stringi väärtuse.

Järeldus

Klassi ObjectInputStream kasutamine on ainus meetod, mis on saadaval ainete lugemiseks, mis kasutavad Serialisable või Externalisable protokolli. Kokkuvõtteks oleme lisanud kõik vajalikud üksikasjad, et kasutada failiobjekti sisendvoost andmete lugemiseks java objektiinputstream klassi. Selleks oleme siia valanud kaks erinevat Java koodi näidet. Esimeses näites kasutatakse täisarvu tüüpi sisendmuutuja väärtust, samas kui teises illustratsioonis on stringi muutuja väärtuse väljaheitmine, st sisendfaili voost lugemine.