Java: InputStream. Vstupné toky

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ú.

Metódy pre triedu InputStream

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.

java vstup do reťazca

Zvážte hlavné metódy triedy InputStream:

  • int available () - Vráti počet bajtov dostupných na čítanie;
  • int read () - berie zo zdroja aktuálny byte a vracia ho do celočíselnej reprezentácie; ak sa čítajú všetky bajty, vráti sa -1;
  • int read (byte [] buffer) - číta dostupné bajty vuvedený pufer je typ bajtové pole (počet bytov vyrovnávacej pamäti rovná veľkosti špecifikované a vracia počet bajtov čítania podarilo a ak je k dispozícii všetky bajty čítať, vracia -1);
  • int čítať (byte [] buffer, int ofset, intpočet bajtov) - Preťaženie predchádzajúce metódy robí to isté, ale je uvedené v časti "offset" pozíciu a čítať, rovnako ako je uvedené v "počet bytov";
  • dlhý preskočiť (dlhý počet bajtov) - preskočí zadaný počet bajtov a vráti skutočný počet bajtov.

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.

java vstupný prúd

Čítanie súborov

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.

Čítanie primitívnych dátových typov

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.

java io vstupný prúd

Názvy metód hovoria samé za seba - každý z nich je určený na čítanie určitého typu údajov.

Buffered input stream

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:

  • BufferedInputStream (vstupný vstup InputStream);
  • BufferedInputStream (vstupný tok InputStream, veľkosť vyrovnávacej pamäte)

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.

záver

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>
páčilo sa:
0
Súvisiace články
Podrobnosti o tom, ako urobiť
Java nie je nainštalovaná: čo mám robiť? Ako môže
Ako nainštalovať jazyk Java v systéme Windows 7
Prvky modelu objektu Java: abstrakt
I / O chyba a jej odstránenie
Java integrované vývojové prostredie
Vstupné zariadenia
Oprava chýb "Minecraft": ako urobiť,
Java: práca so súbormi - písanie, čítanie,
Populárne príspevky
hore