Java ObjectInputStream

Java Objectinputstream



„Informacija, parašyta per ObjectOutputStream objektą, pirmiausia pasiekiama naudojant ObjectInputStream klasę. Pagrindinis ObjectInputStream klasės tikslas būtų atkurti pagrindinius duomenis ir objektus, kurie yra sukurti naudojant ObjectOutputStream klasę. Naudojant „SocketStream“, „ObjectInputStream“ taip pat gali būti naudojamas objektams perkelti iš skirtingų kompiuterių. Todėl nusprendėme parašyti naudingą mūsų Ubuntu 20.04 sistemos vadovą, kaip atmesti objekto įvesties srauto klasės objektą, kad būtų galima nuskaityti duomenis iš failo įvesties srauto. Pradėkime nuo konsolės atidarymo.

01 pavyzdys

Pradėdami pirmąjį savo straipsnio pavyzdį, mes sukūrėme naują „Java“ failą „test.java“. Po to mes taip pat sukūrėme tekstinį failą tame pačiame aplanke.







Norėdami nuskaityti įvesties srauto objektus Java programoje, turime importuoti išvesties srautą. Taigi, iš pradžių importavome paketus „java.io.ObjectInputStream“ ir „java.io.ObjectOutputStream“. Be to, norėdami įterpti duomenis į failą, turime importuoti „java.io.FileInputStream“ ir „java.io.FileInputStream“. Sukūrėme klasę „Main“, turinčią vieną main() funkciją.



Funkcijos vykdymas prasideda nuo sveikojo skaičiaus kintamojo „d“ deklaravimo. Kad išvengtume staigaus programos išėjimo dėl klaidų, įtraukėme java try-catch teiginį. Dalis „bandyti“ prasideda failo išvesties srauto objekto „f“ inicijavimu per „FileOutputStream“ klasę. Šiam objektui „f“ perdavėme failo pavadinimą „new.txt“. Sukūrėme objekto išvesties srautą „o“ ir failo objektą „f“ perdavėme „ObjectOutputStream“ klasei, kad failas būtų išvesties srautas.



Kitoje eilutėje mes iškviečiame Java išvesties srauto funkciją writeInt () per išvesties srauto objektą „o“, kad perduotume jam sveikąjį kintamąjį „d“, ty išsaugotume jį faile. 12 eilutėje sukūrėme failo įvesties srautą „fs“, naudodami „Java“ klasę „FileInputStream“, perduodami jam failą „new.txt“, t. y. jame jau yra duomenų. Šis failo įvesties srauto objektas „fs“ buvo perduotas naujai sugeneruotam ObjectInputStream klasės objektui „os“, kad būtų galima skaityti iš failų srauto. Funkcija println() iš „Java“ paketo „System.out“ buvo pašalinta, kad iškviestų funkciją readInt() per objekto įvesties srauto objektą „os“, kad būtų rodomi duomenys iš failo new.txt. Po to mes uždarėme išvesties ir įvesties srautą naudodami atitinkamus objektus „o“ ir „os“, naudodami „Java“ failų tvarkymo funkciją „uždaryti“. Tai būtinas veiksmas norint uždaryti srautus, kad joks kitas vartotojas negalėtų įvesti ar išvesti duomenų iš failo. Catch() teiginyje naudojome funkciją getStackTrace() norėdami gauti klaidą ir parodyti ją ekrane naudodami išimties kintamąjį „e“. Ši programa yra paruošta vykdyti apvalkale.





Mes ką tik išsaugojome savo Java kodo failą prieš jo vykdymą ir naudojome java raktinio žodžio nurodymą, kad paleistume failą „test.java“. Tai nieko negrąžina mainais. Be to, rodant tekstinio failo „new.txt“ duomenis apvalkale naudojant „cat“ instrukciją, buvo rodoma šiukšlių reikšmė. Taip yra todėl, kad dažniausiai „Java“ vykdytojas negali nuskaityti sveikojo skaičiaus reikšmės iš failo. Bet greičiausiai jis parodys tikslią sveikojo skaičiaus reikšmę.



Patikrinę new.txt failą rankiniu būdu jį atidarydami, pamatėme, kad faile buvo parodytas Unicode reikšmės formatas.

Jei negalite parodyti sveikojo skaičiaus reikšmės iš failo srauto, galite naudoti funkciją writeObject() Java programoje vietoj funkcijos writeInt(), kad įrašytumėte reikšmę „d“ į failo srautą per objektą „o“. kaip parodyta. Be to, norėdami rodyti duomenis iš failo įvesties srauto, vietoj funkcijos readInt () turite atmesti funkciją „readObject()“.

Atnaujinus šį kodą, vykdymo metu būtų rodoma sveikojo skaičiaus reikšmė.

02 pavyzdys

Turėkime kitą „Java“ programavimo reikšmę, kad būtų galima atmesti objekto įvesties srautą eilutės tipo vertei. Taigi, šį pavyzdinį kodą pradėjome importuodami tas pačias java klases FileInputStream, FileOutputStream, ObjectInputStream ir ObjectOutputStream iš java bibliotekos „io“ paketo. Pagrindinė klasė turi savo main() funkciją, kuri pradeda vykdyti šį kodą. Eilutės kintamasis „d2“ inicijuojamas naudojant ilgą eilutės reikšmę.

Tas pats try-catch teiginys buvo atmestas, kad būtų išvengta klaidos ir sklandus šio „Java“ kodo vykdymas. Failo išvesties srauto objektas „f“ buvo sukurtas naudojant „FileOutputStream“ klasę, kaip argumentą naudojant „new.txt“. Failo išvesties srauto objektas „f“ buvo perduotas išvesties srauto objektui „o“, kuris buvo sukurtas naudojant ObjectOutputStream klasę. Dabar išvesties srautas „o“ iškviečia funkciją writeObject(), perduodamas jai eilutės kintamąjį „d“, kuris turi būti įrašytas į failą „new.txt“.

Tada sukūrė failo įvesties srautą „fs“, naudodamas „FileInputStream“ klasę, perduodamas jam failo pavadinimą „new.txt“, t. y. nuskaityti iš jo duomenis. Dabar „ObjectInputStream“ klasės objektas „os“ naudotų failo įvesties srauto objektą „fs“, kad nuskaitytų duomenis naudodamas „Java“ funkciją readObject() klasės „System.out“ vykdymo sakinyje „println“. Tada mes linkę uždaryti įvesties ir išvesties srautus, iškviesdami funkciją „uždaryti“, o gaudymo teiginys naudojamas norint gauti visas išimtis, įvykusias bandomojoje dalyje, ir išvengti staigaus šios programos vykdymo uždarymo.

Vykdant šį „Java“ kodo failą ir tekstinį failą konsolėje buvo rodoma eilutės reikšmė.

Išvada

„ObjectInputStream“ klasės naudojimas yra vienintelis būdas nuskaityti medžiagas, kurios naudoja nuoseklųjį arba išorinį protokolą. Apibendrinant, įtraukėme visą reikalingą informaciją, kad galėtume panaudoti Java objectinputstream klasę duomenims iš failo objekto įvesties srauto nuskaityti. Tam čia pateikiame du skirtingus „Java“ kodo pavyzdžius. Pirmajame pavyzdyje naudojama sveikojo skaičiaus įvesties kintamojo reikšmė, o antroje iliustracijoje buvo išskirta eilutės kintamojo reikšmė, ty nuskaitoma iš įvesties failo srauto.