OqPoWah.com

Java: InputStream. Vhodni tokovi

Java, tako kot mnogi sodobni programski jeziki, podpira izvajanje vhodnih podatkovnih tokov. V Java je InputStream osnovni razred za tokovne byte. Ta razred je abstrakten, torej v procesu programa ne moremo ustvariti svojega primerka. Vendar pa v paketu io obstaja veliko razredov, ki podedujejo in razširjajo funkcionalnost InputStreama. Če želite ta razred uporabiti v kodi, jo morate uvoziti iz paketa java.io.InputStream. Nato bomo pregledali osnovne funkcije, ki jih ponuja razred InputStream, kot tudi glavne razrede, ki jih izvajajo.

Metode za razred InputStream

Pred nadaljevanjem podrobno preučevanje metod InputStream razreda, je treba omeniti, da se izvaja zaprejo in AutoCloseable vmesnike. Zaprti vmesnik nam pove, da je treba pri zapiranju nititi zapreti. To se naredi z uporabo metode close (). Ker je večina metod razreda InputStream v primeru napake ustvari tipa izjema IOException, vse postopke, potrebne za izvedbo poskusiti blok in metodo close () končno narediti napravo tako, da se sproži glede na rezultat operacije poskusiti telo.

Vmesnik AutoCloseable bistveno zmanjša količino tehnične kode, saj omogoča, da se metoda zapreti () samodejno požene in ne dodaja končno bloki kode. Če uporabljate sedmo ali kasnejšo različico Java, lahko InputStream postavite v tako imenovani poskus s sredstvi, ki skrbijo za vse zapiranje.

java inputstream v niz

Razmislite o glavnih metodah razreda InputStream:

  • int available () - vrne število bajtov, ki so na voljo za branje;
  • int read () - vzame iz vira trenutni bajt in ga vrne v celostno predstavitev - če se berejo vsi bajti, se vrne -1;
  • INT glasi (bajt [] pufer) - bere bajta voljo v omenjeni pufer v obliki tipa zlog polja (število bajtov za branje enaka predhodno določeni velikosti bufera- vrne število bajtov, ki bi prochitat- če vse razpoložljive bajtov brati, vrne -1);
  • INT glasi (bajt [] pufer, int offset, int število bajtov) - preobremenitev prejšnjem postopku, počne isto, vendar z določeno igro "uravnoteži" in bere toliko, kot je določeno v "število bajtov";
  • dolg preskok (dolga številka bajtov) - preskoči navedeno število bajtov in vrne dejansko število bajtov.

InputStream izvaja več razredov, zasnovanih za delo z različnimi viri in vrstami podatkov. Drevo dediščine je predstavljeno spodaj.

java inputstream

Branje datotek

Bajtski tok za branje informacij iz datotek izvaja razred FileInputStream. Če želite odpreti datoteko za branje bytov, je dovolj, da ustvarite primerek tega razreda, tako da podate ime datoteke v konstruktor kot argument. Če datoteka z navedenim imenom ne obstaja, bo izpuščena izjema tipa FileNotFoundException.

V primeru uspešnega odpiranja datoteke se delo z njim izvaja z zgoraj opisanimi metodami, ker je FileInputStream naslednik InputStreama.

Branje primitivnih podatkovnih tipov




V prejšnjem primeru je opisano delo z vrednostmi bajtov, ki jih je mogoče razlagati kot simbole. Kaj pa, če moramo prebrati celo število, delno ali logično vrednost? Če želite to narediti, v storitvi Java InputStream posredno razširite razred DataInputStream. Ta razred je ovojnik za InputStream, ki mu je posredovan, ko je ustvarjen kot argument za konstruktorja. Ta vrsta toka bere podatke v binarni obliki.

DataInputStream izvaja tudi vmesnik DataInput in njegove metode za branje primitivnih podatkovnih tipov. Spodaj je seznam teh metod.

java io vhodni tok

Imena metod govorijo zase - vsaka od njih je namenjena branju določene vrste podatkov.

Buffered vhodni tok

Buffered data read stream izvaja razred BufferedInputStream v Java. V tem razredu je vdelan inputStream. Ta razred dopolnjuje tok z vmesnikom, ki omogoča branje več kot en bajt hkrati. To omogoča znatno izboljšanje delovanja operacije. BufferedInputStream je posredni potomec InputStreama in skladno s tem podeduje vse zgornje metode.

Ta razred ima dva konstruktorja:

  • BufferedInputStream (vhodni vhodni vhod);
  • BufferedInputStream (vhodni tok InputStream, velikost int medpomnilnika)

Iz podpisa konstruktorjev lahko razumete, da prvi določa privzeto velikost medpomnilnika, v drugem pa ročno nastavi.

Zaključek

Zajemali smo osnovno implementacijo InputStreama. Če želite pretvoriti prejete bajte v niz, nato pa v Java InputStream v niz (), na žalost, ni preobremenjen, zato boste morali uporabiti posebne pripomočke, na primer IOUtils iz knjižnice Apache Commons.

Zdieľať na sociálnych sieťach:

Príbuzný