Java ByteArrayInputStream (s príkladmi)

V tomto tutoriále sa pomocou príkladov dozvieme o prostredí Java ByteArrayInputStream a jeho metódach.

ByteArrayInputStreamTrieda java.ioobalu môže byť použitá pre čítanie pole vstupných dát (v bajtoch).

Rozširuje InputStreamabstraktnú triedu.

Poznámka : V ByteArrayInputStreamsysté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.ByteArrayInputStreambalí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 arrpoľ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

ByteArrayInputStreamTrieda poskytuje implementácie pre rôzne metódy prezentovať vo InputStreamtriede.

metóda read ()

  • read() - načíta jeden bajt z poľa prítomného vo vstupnom prúde
  • read(byte() array) - číta bajty zo vstupného toku a ukladá sa do zadaného poľa
  • read(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

  1. Túto available()metódu sme použili na kontrolu počtu dostupných bajtov vo vstupnom toku.
  2. Potom sme read()metódu použili dvakrát na načítanie 2 bajtov zo vstupného toku.
  3. 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 ByteArrayInputStreamtriedy. 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).

Zaujímavé články...