Java: InputStream. Vstupní toky
Java, stejně jako mnoho moderních programovacích jazyků, podporuje implementaci datových toků. V jazyce Java je InputStream základní třídou pro proudové byty. Tato třída je abstraktní, to znamená, že v procesu programu nemůžeme vytvořit jeho instanci. V balíčku io však existuje mnoho tříd, které dědí a rozšiřují funkci InputStream. Chcete-li tuto třídu použít ve svém kódu, musíte ji importovat z balíčku java.io.InputStream. Dále se podíváme na základní funkce, které poskytuje třída InputStream, stejně jako hlavní třídy, které je implementují.
Obsah
Metody pro třídu InputStream
Předtím, než se přistoupí k podrobnému studiu metod InputStream třídy, je třeba uvést, že se realizuje uzavíratelné a AutoCloseable rozhraní. Rozhraní Uzavřeno nám říká, že při zavírání závitu musí být zavřeno. To se provádí metodou close (). Protože většina z metod třídy InputStream v případě chyby vytváří typ výjimka IOException, všechny operace potřebné k provedení bloku try a metody close () konečně jednotku tak, aby se vypnul v závislosti na výsledku operace, aby se pokusila tělo.
Rozhraní Automatické ukládání výrazně snižuje množství technického kódu, protože umožňuje, aby metoda close () automaticky vypálila a neobsahovala konečný blok kódu. Pokud používáte sedmou nebo novější verzi Java, můžete InputStream umístit do tzv. Zkusit s prostředky, které se starají o všechny operace zavírání.
Zvažte hlavní metody třídy InputStream:
- int available () - Vrátí počet bajtů dostupných pro čtení;
- int read () - převezme ze zdroje aktuální bajt a vrátí jej do celočíselné reprezentace - pokud jsou všechny bajty čteny, vrací -1;
- int read (byte [] pufr) - Čte bajtů k dispozici v uvedené vyrovnávací paměti ve formě typu byte pole (počet bajtů čtení se rovná předem určené velikosti bufera- vrací počet bajtů, který by mohl prochitat- pokud všechny dostupné bajty číst, vrací -1);
- int read (byte [] pufr, int offset, počet int bajtů) - přetížení předchozí metody, dělá to samé, ale s určitým „offset“ poloze a čte stejně, jak je uvedeno v „počet bajtů“;
- (dlouhý počet bajtů) - přeskočí zadaný počet bajtů a vrátí skutečný počet bajtů.
InputStream je implementován několika třídami, které jsou navrženy pro práci s různými zdroji a datovými typy. Strom dědictví je uveden níže.
Čtení souborů
Bajtový proud pro čtení informací ze souborů je implementován třídou FileInputStream. Chcete-li otevřít soubor pro čtení bajtů, stačí vytvořit instanci této třídy a předat název souboru konstruktoru jako argument. Pokud soubor s daným jménem neexistuje, udělá se výjimka typu FileNotFoundException.
V případě úspěšného otevření souboru se práce s ním provádí metodami popsanými výše, protože FileInputStream je nástupcem InputStreamu.
Čtení primitivních datových typů
Předchozí příklad popisuje práci s hodnotami bytu, které lze interpretovat jako symboly. Ale co když potřebujeme přečíst celé, částečné nebo logické hodnoty? Chcete-li to v Javě InputStream nepřímo rozšiřuje třídu DataInputStream. Tato třída je souhrnný InputStream, který je předán k němu při tvorbě jako argument konstruktoru. Tento druh streamu čte data v binární formě.
DataInputStream také implementuje rozhraní DataInput a jeho metody pro čtení primitivních datových typů. Níže je uveden seznam těchto metod.
Názvy metod vyjadřují samy o sobě - každá z nich je určena pro čtení určitého typu dat.
Buffered input stream
Pulzovaný čtecí proud dat je implementován třídou BufferedInputStream v jazyce Java. Vstupní stream je zabalen do této třídy. Tato třída doplňuje tok s vyrovnávací pamětí, která vám umožní číst více než jeden bajt najednou. To umožňuje podstatně zlepšit výkon operace. BufferedInputStream je nepřímým potomkem InputStreamu a v důsledku toho dědí všechny výše uvedené metody.
Tato třída má dva konstruktory:
- BufferedInputStream (vstupní proud InputStream);
- BufferedInputStream (vstupní proud InputStream, velikost vyrovnávací paměti int)
Z podpisu konstruktorů můžete pochopit, že první z nich nastavuje velikost vyrovnávací paměti ve výchozím nastavení a ve druhé je možné ji nastavit ručně.
Závěr
Pokryli jsme základní implementaci InputStreamu. Pokud potřebujete konvertovat přijaté bajty do řetězce, pak v Funkce Java InputStream to String (), bohužel, není přetížena, takže pro to budete muset použít speciální nástroje, například IOUtils z knihovny Apache Commons.
- Java: výjimky a jejich zacházení
- Jak nainstalovat jazyk Java v systému Windows 7
- První program Java je Hello World
- Java programovací jazyk
- Jak a proč potřebuji instalovat Java na svém počítači?
- Cigarety Java: popis a typy
- Jávové pole řetězců. Třídění pole v jazyce Java. Dvourozměrné pole Java
- Java: regulární výrazy, speciální znaky
- Programování: Java. Typy dat
- Abstraktní třída a metoda: popis, vlastnosti a rysy. Jaký je rozdíl mezi abstraktní třídou a…
- Java není nainstalována: co mám dělat? Jak nainstalovat na Ubuntu?
- Generika jazyka Java: Popis a metody
- BigInteger Java: práce s velkými čísly
- Java Array. Pole v Javě. Java pro začátečníky
- Java: práce se soubory - psaní, čtení, mazání
- Prvky modelu objektu Java: abstraktní třída, rozhraní
- Jak povolit Javu ve Firefoxu pro problémy s uzamčením
- Jak odstranit java z počítače? Je to snadné!
- Objektově orientované programování v Pythonu: třídy, popis a funkce
- Toky Java: Vytvoření a dokončení
- Jak psát do souboru v jazyce Java