V tomto tutoriále sa pomocou príkladov dozvieme o prostredí Java ByteArrayInputStream a jeho metódach.
ByteArrayInputStream
Trieda java.io
obalu môže byť použitá pre čítanie pole vstupných dát (v bajtoch).
Rozširuje InputStream
abstraktnú triedu.
Poznámka : V ByteArrayInputStream
systéme sa vstupný tok vytvára pomocou poľa bajtov. Zahŕňa interné pole na ukladanie údajov konkrétneho bajtového poľa.
Vytvorte ByteArrayInputStream
Aby sme vytvorili vstupný prúd bajtového poľa, musíme najskôr importovať java.io.ByteArrayInputStream
balík. Po importovaní balíka môžeme vytvoriť vstupný tok.
// Creates a ByteArrayInputStream that reads entire array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr);
Tu sme vytvorili vstupný prúd, ktorý číta celé údaje z arr
poľa. Môžeme však tiež vytvoriť vstupný prúd, ktorý číta iba niektoré údaje z poľa.
// Creates a ByteArrayInputStream that reads a portion of array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr, int start, int length);
Tu vstupný prúd číta počet bajtov rovných dĺžke z poľa počnúc od počiatočnej polohy.
Metódy ByteArrayInputStream
ByteArrayInputStream
Trieda poskytuje implementácie pre rôzne metódy prezentovať vo InputStream
triede.
metóda read ()
read()
- načíta jeden bajt z poľa prítomného vo vstupnom prúderead(byte() array)
- číta bajty zo vstupného toku a ukladá sa do zadaného poľaread(byte() array, int start, int length)
- načíta počet bajtov rovných dĺžke z toku a uloží do určeného poľa počnúc začiatkom pozície
Príklad: ByteArrayInputStream na čítanie údajov
import java.io.ByteArrayInputStream; public class Main ( public static void main(String() args) ( // Creates an array of byte byte() array = (1, 2, 3, 4); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); System.out.print("The bytes read from the input stream: "); for(int i= 0; i < array.length; i++) ( // Reads the bytes int data = input.read(); System.out.print(data + ", "); ) input.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) )
Výkon
Bajty načítané zo vstupného toku: 1, 2, 3, 4,
Vo vyššie uvedenom príklade sme vytvorili vstupný prúd bajtového poľa s názvom input
.
ByteArrayInputStream input = new ByteArrayInputStream(array);
Tu vstupný prúd obsahuje všetky údaje zo zadaného poľa. Na načítanie údajov zo vstupného toku sme použili read()
metódu.
metóda dostupná ()
Na získanie počtu dostupných bajtov vo vstupnom toku môžeme použiť available()
metódu. Napríklad,
import java.io.ByteArrayInputStream; public class Main ( public static void main(String args()) ( // Creates an array of bytes byte() array = ( 1, 2, 3, 4 ); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); // Returns the available number of bytes System.out.println("Available bytes at the beginning: " + input.available()); // Reads 2 bytes from the input stream input.read(); input.read(); // Returns the available number of bytes System.out.println("Available bytes at the end: " + input.available()); input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Výkon
Dostupné bajty na začiatku: 4 Dostupné bajty na konci: 2
Vo vyššie uvedenom príklade
- Túto
available()
metódu sme použili na kontrolu počtu dostupných bajtov vo vstupnom toku. - Potom sme
read()
metódu použili dvakrát na načítanie 2 bajtov zo vstupného toku. - Teraz po prečítaní 2 bajtov sme skontrolovali dostupné bajty. Dostupné bajty sa tentoraz znížili o 2.
metóda skip ()
Na zahodenie a preskočenie zadaného počtu bajtov môžeme použiť skip()
metódu. Napríklad,
import java.io.ByteArrayInputStream; public class Main ( public static void main(String args()) ( // Create an array of bytes byte() array = ( 1, 2, 3, 4 ); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); // Using the skip() method input.skip(2); System.out.print("Input stream after skipping 2 bytes: "); int data = input.read(); while (data != -1) ( System.out.print(data + ", "); data = input.read(); ) // close() method input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Výkon
Vstupný prúd po preskočení 2 bajtov: 3, 4,
Vo vyššie uvedenom príklade sme použili metódu skip () na preskočenie 2 bajtov údajov zo vstupného toku. Preto 1 a 2 sa nečítajú zo vstupného toku.
metóda close ()
Na uzavretie vstupného toku môžeme použiť close()
metódu.
Avšak, close()
spôsob má v žiaden účinok ByteArrayInputStream
triedy. Metódy tejto triedy môžeme použiť aj po vyvolaní close()
metódy.
Ďalšie metódy ByteArrayInputStream
Metódy | Popisy |
---|---|
finalize() | zaisťuje close() volanie metódy |
mark() | označí pozíciu vo vstupnom toku, do ktorej boli načítané údaje |
reset() | vráti ovládací prvok do bodu vo vstupnom toku, kde bola nastavená značka |
markSupported() | skontroluje, či vstupný prúd podporuje mark() areset() |
Ak sa chcete dozvedieť viac, navštívte stránku Java ByteArrayInputStream (oficiálna dokumentácia Java).