Java: InputStream. Vhodni tokovi

Java, kot tudi številni sodobni programski jeziki, ki podpira izvajanje tokov podatkovnega toka. V Javi je InputStream osnovni razred za bajtne tokove. Ta razred je abstrakten, to pomeni, da v procesu programa ne moremo ustvariti njegove kopije. Vendar pa ima paket io veliko razredov, ki podedujejo in razširjajo funkcionalnost programa InputStream. Če želite uporabiti ta razred v kodi, ga morate uvoziti iz paketa java.io.InputStream. Nato bomo preučili osnovno funkcionalnost, ki jo zagotavlja razred InputStream, in glavne razrede, ki ga izvajajo.


Metode razreda InputStream

Pred nadaljevanjem podrobne študije metod razreda InputStream je treba opozoriti, da izvaja vmesnike Closeable in AutoCloseable. Vmesnik Closeable nam pove, da ko končate delo z nitjo, ga morate zapreti. To naredite z metodo close (). Ker večina načinov InputStream v primeru napake ustvari izjemo za IOException, morajo biti vse operacije izvedene v poskusnem bloku, metoda close () pa se končno prenese na blok, ne glede na rezultat v telesu try. Vmesnik AutoCloseable močno zmanjša obseg tehnične kode, saj omogoča, da metoda close () deluje samodejno in ne doda bloka v kodo. Če uporabljate sedmo ali novejšo različico Jave, lahko InputStream postavite v tako imenovani poskus s sredstvi, ki izvedejo vse operacije zaustavitve.


Poglejmo osnovne metode razreda InputStream:
  • int available () - vrne berljivo številkobajtov
  • int read () - iz vira vzame trenutni bajt in ga vrne v celo število; če se preberejo vsi bajti, se vrne -1; [Int]
  • int read (byte [] buffer) - bere razpoložljive bajtov v določenem medpomnilniku v obliki niza bajtov (število bajtov za branje ene določene velikosti medpomnilnika; vrne število bajtov, ki so bili berljivi; če se preberejo vsi razpoložljivi bajti, se vrne -1);
  • int read (bajt [] medpomnilnik, int shift, int število bajtov) - preobremenitev prejšnje metode, delanje enako, vendar z določeno v "izločitvi" položaja in se glasi toliko, kot je določeno v "številu bajtov" ;
  • dolg preskok (dolgo število bajtov) - preskoči določeno število bajtov in vrne dejansko število izpuščenih.
  • InputStream se izvaja z več razredi, zasnovanimi za delo z različnimi viri in tipi podatkov. Spodaj je drevo dedovanja.

    Branje datotek

    Bajtni tok za branje informacij iz datotek se izvaja z razredom FileInputStream. Če želite odpreti datoteko za branje bajtov, je dovolj, da izdelate primerek tega razreda tako, da prenesete ime datoteke na konstruktorja kot argument. Če datoteka s poslanim imenom ne obstaja, bo za tip FileNotFoundException generirana izjema. V primeru uspešnega odpiranja datoteke se delo z njim izvede z zgoraj opisanimi metodami, saj je FileInputStream dedič InputStream.

    Branje primitivnih tipov podatkov

    Prejšnji primer opisuje delo z vrednostmi bajtov, ki jih je mogoče interpretirati kot simbole. Kaj pa, če moramo prebrati celo število, delno ali logično vrednost? Zato v Java InputStream je posredno razširjeno z razredom DataInputStream. Ta razred je lupina za InputStream, ki se ji posreduje pri izdelavi argumenta konstruktorja. Ta vrsta toka bere podatke v binarni obliki.
    DataInputStream izvaja tudi vmesnik DataInput in njegove metode za branje primitivnih tipov podatkov. Spodaj je seznam teh metod.
    Imena metod govorijo sama zase - vsaka od njih je namenjena branju določene vrste podatkov.

    Buffered tok vnosa

    Buffered tok podatkov se izvaja v razredu BufferedInputStream v Javi. InputStream je lupina tega razreda. Ta razred dopolnjuje pretočni vmesnik, ki omogoča hkratno branje ne enega, temveč več bajtov. Tako je mogoče bistveno povečati učinkovitost delovanja. BufferedInputStream je neposredni potomec InputStream in zato podeduje vse zgoraj navedene metode. Ta razred ima dva konstruktorja:
  • BufferedInputStream (vhodni tok InputStream);
  • BufferedInputStream (vhodni tok InputStream, velikost vmesnega pomnilnika)
  • Iz podpisa konstruktorjev lahko razumemo, da prvi nastavi privzeto velikost medpomnilnika, v drugem pa jih je mogoče ročno nastaviti.

    Zaključek

    Pregledali smo glavne izvedbe projekta InputStream. Če morate prejete bajtove pretvoriti v niz, potem Java InputStream v String () žal ni preobremenjena, zato boste morali uporabiti posebne pripomočke, kot je IOUtils, iz knjižnice Apache Commons.

    Sorodne publikacije