Java, rovnako ako mnohé moderné jazykyprogramovanie, podporuje implementáciu dátových tokov. V jazyku Java je InputStream základnou triedou pre bajtové toky. Táto trieda je abstraktná, to znamená, že v procese programu nemôžeme vytvoriť jeho inštanciu. Avšak v balíku io existuje veľa tried, ktoré zdedia a rozširujú funkčnosť InputStream. Ak chcete použiť túto triedu vo svojom kóde, musíte ju importovať z balíka java.io.InputStream. Ďalej sa pozrieme na základné funkcie, ktoré poskytuje trieda InputStream, ako aj hlavné triedy, ktoré ju implementujú.
Predtým, než začnete podrobnú štúdiumetódy triedy InputStream, treba spomenúť, že implementuje rozhrania s možnosťou uzatvorenia a automatického uzatvárania. Uzavreté rozhranie nám hovorí, že pri zatváraní vlákna musí byť zatvorené. To sa deje pomocou metódy close (). Pretože väčšina z metód triedy InputStream v prípade chyby vytvára typ výnimka IOException, všetky operácie potrebné na vykonanie bloku try a metódy close () konečne jednotku tak, aby sa vypol v závislosti od výsledku operácie, aby sa pokúsila telo.
Rozhranie AutoCloseable výrazne znižujemnožstvo technického kódu, pretože umožňuje, aby metóda close () fungovala automaticky a aby sa konečne neobjavil kód. Ak používate siedmu alebo novšiu verziu jazyka Java, môžete vložiť nástroj InputStream do tzv. Try with resources, ktorý sa stará o všetky operácie uzatvárania.
Zvážte hlavné metódy triedy InputStream:
InputStream je implementovaný niekoľkými triedami, ktoré sú určené na prácu s rôznymi zdrojmi a dátovými typmi. Strom dedičnosti je uvedený nižšie.
Bajtový tok pre čítanie informácií zo súborovimplementované triedou FileInputStream. Ak chcete otvoriť súbor pre čítanie bytov, čo stačí na vytvorenie inštancie triedy, prechádzať k jeho konštruktor názov súboru ako argument. Ak je súbor prenesený do mena neexistuje, bude hodiť výnimku typu FileNotFoundException.
V prípade úspešného otvorenia súboru sa práca s ním vykonáva pomocou vyššie popísaných metód, pretože FileInputStream je nástupcom InputStream.
Predchádzajúci príklad popisoval prácu sbajtov, ktoré možno interpretovať ako symboly. Ale čo keď potrebujeme čítať celočíselnú, zlomkovú alebo logickú hodnotu? Ak to chcete urobiť, Java InputStream je nepriamo rozšírená o triedu DataInputStream. Táto trieda je obal pre InputStream, ktorý sa odovzdáva, keď je vytvorený ako argument pre konštruktéra. Tento druh prúdu číta údaje v binárnej forme.
DataInputStream tiež implementuje rozhranie DataInput a jeho metódy na čítanie primitívnych dátových typov. Nižšie je uvedený zoznam týchto metód.
Názvy metód hovoria samé za seba - každý z nich je určený na čítanie určitého typu údajov.
Prenosový dátový tok s pufrovanými dátami je implementovanýtrieda BufferedInputStream v jazyku Java. Vstupná vrstva je zabalená do tejto triedy. Táto trieda dopĺňa tok s vyrovnávacou pamäťou, ktorá vám umožní čítať naraz viac ako jeden bajt. To umožňuje výrazne zlepšiť výkonnosť operácie. BufferedInputStream je nepriamy potomok InputStream a preto zdedí všetky vyššie uvedené metódy.
Táto trieda má dvoch konštruktérov:
Z podpisu konštruktorov môžete pochopiť, že prvý z nich nastavuje veľkosť vyrovnávacej pamäte ako predvolenú av druhom je možné ho nastaviť ručne.
Pokryli sme základnú implementáciu nástroja InputStream. Ak potrebujete konvertovať prijaté bajty do reťazca, potom v Funkcia Java InputStream to String (), bohužiaľ, nie je preťažená, takže na to budete musieť použiť špeciálne nástroje, napríklad IOUtils z knižnice Apache Commons.
</ p>