V tomto kurzu se na příkladu dozvíme o třídě Java InputStream a jejích metodách.
InputStream
Třída java.io
balíčku je abstraktní nadtřída, který představuje vstupní proud bajtů.
Jelikož InputStream
jde o abstraktní třídu, není sama o sobě užitečná. Jeho podtřídy však lze použít ke čtení dat.
Podtřídy InputStream
Abychom mohli využít funkčnost InputStream
, můžeme použít její podtřídy. Někteří z nich jsou:
- FileInputStream
- ByteArrayInputStream
- ObjectInputStream
O všech těchto podtřídách se dozvíme v dalším kurzu.
Vytvořte InputStream
Abychom mohli vytvořit InputStream, musíme java.io.InputStream
nejprve importovat balíček. Jakmile importujeme balíček, můžeme vytvořit vstupní proud takto.
// Creates an InputStream InputStream object1 = new FileInputStream();
Zde jsme vytvořili vstupní proud pomocí FileInputStream
. Je to proto, že InputStream
jde o abstraktní třídu. Proto nemůžeme vytvořit objekt InputStream
.
Poznámka : Můžeme také vytvořit vstupní proud z jiných podtříd třídy InputStream
.
Metody InputStream
InputStream
Třída poskytuje různé metody, které jsou implementovány jejích podtříd. Zde jsou některé z běžně používaných metod:
read()
- načte jeden bajt dat ze vstupního prouduread(byte() array)
- čte bajty ze streamu a ukládá je do zadaného poleavailable()
- vrátí počet bajtů dostupných ve vstupním proudumark()
- označí pozici ve vstupním proudu, do které byla načtena datareset()
- vrátí ovládací prvek do bodu v proudu, kde byla nastavena značkamarkSupported()
- zkontroluje, zda je v proudu podporována metodamark()
areset()
skips()
- přeskočí a zahodí zadaný počet bajtů ze vstupního prouduclose()
- zavře vstupní proud
Příklad: InputStream pomocí FileInputStream
Zde je způsob, jak můžeme implementovat InputStream
pomocí FileInputStream
třídy.
Předpokládejme, že máme soubor s názvem input.txt s následujícím obsahem.
This is a line of text inside the file.
Zkusme tento soubor přečíst pomocí FileInputStream
(podtřídy InputStream
).
import java.io.FileInputStream; import java.io.InputStream; public class Main ( public static void main(String args()) ( byte() array = new byte(100); try ( InputStream input = new FileInputStream("input.txt"); System.out.println("Available bytes in the file: " + input.available()); // Read byte from the input stream input.read(array); System.out.println("Data read from the file: "); // Convert byte array into string String data = new String(array); System.out.println(data); // Close the input stream input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Výstup
Available bytes in the file: 35 Data read from the file: This is a line of text inside the file
Ve výše uvedeném příkladu jsme vytvořili vstupní proud pomocí FileInputStream
třídy. Vstupní proud je propojen se souborem input.txt .
InputStream input = new FileInputStream("input.txt");
Abychom mohli načíst data ze souboru input.txt , implementovali jsme tyto dvě metody.
input.read(array); // to read data from the input stream input.close(); // to close the input stream
Další informace najdete v Java InputStream (oficiální dokumentace Java).