Java ByteArrayInputStream (s příklady)

V tomto kurzu se pomocí příkladů dozvíme o Java ByteArrayInputStream a jeho metodách.

ByteArrayInputStreamTřída java.ioobalu může být použita pro čtení pole vstupních dat (v bajtech).

Rozšiřuje InputStreamabstraktní třídu.

Poznámka : V ByteArrayInputStream, vstupní proud je vytvořen pomocí pole bajtů. Zahrnuje vnitřní pole pro ukládání dat konkrétního bajtového pole.

Vytvořte ByteArrayInputStream

Abychom vytvořili vstupní proud bajtového pole, musíme java.io.ByteArrayInputStreamnejprve importovat balíček. Jakmile importujeme balíček, můžeme vytvořit vstupní proud.

 // Creates a ByteArrayInputStream that reads entire array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr); 

Zde jsme vytvořili vstupní proud, který čte celá data z arrpole. Můžeme však také vytvořit vstupní proud, který čte pouze některá data z pole.

 // Creates a ByteArrayInputStream that reads a portion of array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr, int start, int length); 

Zde vstupní proud čte počet bajtů rovných délce z pole počínaje od počáteční polohy.

Metody ByteArrayInputStream

ByteArrayInputStreamTřída poskytuje implementace pro různé metody prezentovat ve InputStreamtřídě.

metoda read ()

  • read() - načte jeden bajt z pole přítomného ve vstupním proudu
  • read(byte() array) - čte bajty ze vstupního proudu a ukládá do zadaného pole
  • read(byte() array, int start, int length) - načte počet bajtů rovných délce ze streamu a uloží do zadaného pole počínaje od začátku pozice

Příklad: ByteArrayInputStream pro čtení dat

 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ýstup

 Byty načtené ze vstupního proudu: 1, 2, 3, 4, 

Ve výše uvedeném příkladu jsme vytvořili vstupní proud bajtového pole s názvem input.

 ByteArrayInputStream input = new ByteArrayInputStream(array); 

Zde vstupní proud zahrnuje všechna data ze zadaného pole. K načtení dat ze vstupního proudu jsme použili read()metodu.

dostupná metoda ()

Chcete-li získat počet dostupných bajtů ve vstupním proudu, můžeme použít available()metodu. Napří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ýstup

 Dostupné bajty na začátku: 4 Dostupné bajty na konci: 2 

Ve výše uvedeném příkladu

  1. available()Metodu jsme použili ke kontrole počtu dostupných bytů ve vstupním proudu.
  2. Poté jsme read()metodu použili dvakrát ke čtení 2 bajtů ze vstupního proudu.
  3. Nyní po přečtení 2 bajtů jsme zkontrolovali dostupné bajty. Tentokrát se dostupné bajty snížily o 2.

metoda skip ()

Chcete-li zahodit a přeskočit zadaný počet bajtů, můžeme použít skip()metodu. Napří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ýstup

 Vstupní proud po přeskočení 2 bajtů: 3, 4, 

Ve výše uvedeném příkladu jsme použili metodu skip () k přeskočení 2 bajtů dat ze vstupního proudu. Proto 1 a 2 nejsou čteny ze vstupního proudu.

metoda close ()

K uzavření vstupního proudu můžeme použít close()metodu.

Nicméně, close()způsob má v žádný účinek ByteArrayInputStreamtřídy. Metody této třídy můžeme používat i po close()vyvolání metody.

Další metody ByteArrayInputStream

Metody Popisy
finalize() zajišťuje, že je close()metoda volána
mark() označí pozici ve vstupním proudu, do které byla načtena data
reset() vrátí ovládací prvek do bodu ve vstupním proudu, kde byla nastavena značka
markSupported() zkontroluje, zda vstupní proud podporuje mark()areset()

Další informace najdete v Java ByteArrayInputStream (oficiální dokumentace Java).

Zajímavé články...