KompiuteriaiProgramavimas

"Java": InputStream. įvesties srautai

"Java", kaip ir daugelis šiuolaikinės programavimo kalbos, palaiko įgyvendinimas duomenų įvesties srautai. Java InputStream yra pagrindas klasė baitų srautus. Ši klasė yra abstrakti, kad yra programos, žinoma, mes negalime sukurti jo egzempliorius. Tačiau IO paketas turi klases, kurios paveldėti ir išplėsti į InputStream funkcionalumą rinkinį. Norėdami naudotis šia klasę kodą, jis turi būti importuojami iš java.io.InputStream paketą. Be to, mes manome, pagrindinė funkcija, kuri suteikia InputStream klasė, ir pagrindinis klases, kad ją įgyvendinti.

Metodai klasė InputStream

Prieš pradedant išsamiu tyrimu dėl InputStream klasės metodus, reikėtų paminėti, kad ji įgyvendina uždaroma ir AutoCloseable sąsajas. Sąsaja uždaroma pasakoja, kad ties darbu su juo srauto užbaigimo nebūtinai turi būti uždarytos. Tai daroma naudojant metodą arti (). Kadangi dauguma InputStream klasės metodų atveju klaidos sukuria išimtis tipo IOException, visas operacijas, reikalingas atlikti pabandyti blokas ir metodas Uždaryti () pagaliau padaryti įrenginį taip, kad jis suveikė, priklausomai nuo operacijos išbandyti kūną.

AutoCloseable sąsaja žymiai sumažina kodas išlaikymo sumą, nes ji leidžia close () metodas darbą automatiškai ir nereikia įtraukti į savo kodą pagaliau blokuoti. Jei naudojate septintoji arba naujesnė versija Java, InputStream gali būti dedama į vadinamąją pabandyti su išteklių, visos operacijos, uždarykite srautas perima.

Apsvarstykite pagrindinius metodus InputStream klasės:

  • INT galima () - grąžina perskaitymo baitų skaičių;
  • INT skaityti () - sustabdo esamą baitas išteklių ir grąžina sveikasis skaičius atstovavimą; jei visi baitai skaityti, -1 grąžinamas;
  • INT skaityti (baitas [] buferio) - Skaito baitų prieinama minėtas buferis į baitų masyvą tipo forma (baitų skaičius skaityti buferio lygus nurodyto dydžio ir grąžina skaityti pavyko baitų skaičius ir, jeigu visos turimos baitų skaityti, grąžina -1);
  • INT skaityti (baitų [] buferio, int kompensuoti, INT baitų skaičius) - perkrovos ankstesnio metodo, daro tą patį, bet su tam tikro "kompensuoti" padėtį ir skaito, kiek nustatyta į "baitų skaičius";
  • ilgai Pereiti (ilgas baitų skaičius) - baitų praleidžia skaičius ir grąžina tikrąją skaičių praleidau.

InputStream padargai keliose klasėse skirta dirbti su skirtingų šaltinių ir tipų duomenys. Žemiau rodo paveldėjimo medį.

skaityti failus

Baitas srautas skaityti duomenis iš failų yra įgyvendinamos klasės FileInputStream. Norėdami atidaryti failą skaityti baitų, pakankamai sukuria klasės egzempliorius, einančios į savo konstruktorius failo pavadinimą kaip argumentą. Jei failas yra perkeliamas į pavadinimu neegzistuoja, ji bus mesti, kurio tipas FileNotFoundException išimtis.

Esant sėkmingai atidaryti failą, darbas su jais yra atliekami naudojant aukščiau aprašytus metodus, kaip yra perėmėjas FileInputStream InputStream.

Skaitymas primityvius duomenų tipai

Pirmiau pateiktame pavyzdyje aprašomas darbas su baitų vertes, kurios gali būti aiškinamos kaip simboliai. Bet kas, jei mes turime skaityti sveikasis skaičius, dalies ėminio arba Būlio vertė? Norėdami tai padaryti, Java InputStream netiesiogiai išplečia klasės DataInputStream. Ši klasė yra įvynioti į InputStream, kuri yra perduodama į jį ne kūrimo kaip konstruktorius argumentas. Šis pokalbio rūšies skaito Į dvejetaine forma duomenis.

DataInputStream taip pat įgyvendina duomenysžaliava sąsaja ir jos metodus skaityti primityvius duomenų tipus. Žemiau yra šių metodų sąrašas.

Metodas pavadinimai kalba patys už save - kiekvienas iš jų skirtas skaityti tam tikrą duomenų tipą.

Buferintas įvedimas srautas

Buferinis srautas duomenų nuskaitymo realizuojamas BufferedInputStream klasė Java. InputStream yra įvyniojami šioje klasėje. Į šią klasę baigia srautas buferio, kuri leidžia jums skaityti tuo pačiu metu ne vienas, o keli baitai. Tai leidžia žymiai pagerinti veikimo efektyvumą. BufferedInputStream palikuonis InputStream yra netiesioginis, todėl paveldi visus minėtus metodus.

Ši klasė turi du konstruktoriai:

  • BufferedInputStream (InputStream įvesties srautas);
  • BufferedInputStream (InputStream įvesties srautas, INT buferio dydis)

Parašas dizaineriai gali būti suprantama, kad pirmoji nustato numatytąjį buferio dydis, o antroje tai galima nustatyti rankiniu būdu.

išvada

Mes peržiūrėjo pagrindinę realizavimą InputStream. Jei jums reikia konvertuoti gautą baitų į Java InputStream į eilutę () eilutę, deja, nėra perkrautas, todėl teks naudoti specialius įrankius, pvz IOUtils iš "Apache Commons bibliotekoje.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 lt.atomiyme.com. Theme powered by WordPress.