Java ByteArrayInputStream (z przykładami)

W tym samouczku za pomocą przykładów nauczymy się języka Java ByteArrayInputStream i jego metod.

ByteArrayInputStreamKlasa java.iopakietu może być używana do odczytu tablicy danych wejściowych (w bajtach).

Rozszerza InputStreamklasę abstrakcyjną.

Uwaga : w ByteArrayInputStreamprogramie strumień wejściowy jest tworzony przy użyciu tablicy bajtów. Zawiera wewnętrzną tablicę do przechowywania danych tej konkretnej tablicy bajtów.

Utwórz ByteArrayInputStream

Aby utworzyć strumień wejściowy tablicy bajtów, musimy najpierw zaimportować java.io.ByteArrayInputStreampakiet. Po zaimportowaniu pakietu, oto jak możemy utworzyć strumień wejściowy.

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

Tutaj utworzyliśmy strumień wejściowy, który odczytuje całe dane z arrtablicy. Możemy jednak również utworzyć strumień wejściowy, który odczytuje tylko niektóre dane z tablicy.

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

Tutaj strumień wejściowy odczytuje liczbę bajtów równą długości z tablicy, zaczynając od pozycji początkowej.

Metody ByteArrayInputStream

ByteArrayInputStreamKlasa zawiera implementacje dla różnych sposobów przedstawienia w InputStreamklasie.

read () Metoda

  • read() - czyta pojedynczy bajt z tablicy obecnej w strumieniu wejściowym
  • read(byte() array) - odczytuje bajty ze strumienia wejściowego i przechowuje w określonej tablicy
  • read(byte() array, int start, int length) - odczytuje liczbę bajtów równą długości ze strumienia i zapisuje w określonej tablicy zaczynając od pozycji początkowej

Przykład: ByteArrayInputStream do odczytu danych

 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(); ) ) ) 

Wynik

 Bajty odczytane ze strumienia wejściowego: 1, 2, 3, 4, 

W powyższym przykładzie utworzyliśmy strumień wejściowy tablicy bajtów o nazwie input.

 ByteArrayInputStream input = new ByteArrayInputStream(array); 

Tutaj strumień wejściowy zawiera wszystkie dane z określonej tablicy. Aby odczytać dane ze strumienia wejściowego, skorzystaliśmy z read()metody.

dostępne () Metoda

Aby uzyskać liczbę dostępnych bajtów w strumieniu wejściowym, możemy użyć available()metody. Na przykład,

 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(); ) ) ) 

Wynik

 Dostępne bajty na początku: 4 Dostępne bajty na końcu: 2 

W powyższym przykładzie

  1. Zastosowaliśmy tę available()metodę, aby sprawdzić liczbę dostępnych bajtów w strumieniu wejściowym.
  2. Następnie użyliśmy tej read()metody 2 razy, aby odczytać 2 bajty ze strumienia wejściowego.
  3. Teraz, po przeczytaniu 2 bajtów, sprawdziliśmy dostępne bajty. Tym razem dostępne bajty zmniejszyły się o 2.

skip () Metoda

Aby odrzucić i pominąć określoną liczbę bajtów, możemy użyć skip()metody. Na przykład,

 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(); ) ) ) 

Wynik

 Strumień wejściowy po pominięciu 2 bajtów: 3, 4, 

W powyższym przykładzie użyliśmy metody skip () do pominięcia 2 bajtów danych ze strumienia wejściowego. Stąd 1 i 2 nie są odczytywane ze strumienia wejściowego.

close () Metoda

Aby zamknąć strumień wejściowy, możemy użyć close()metody.

Jednak close()metoda nie ma wpływu na ByteArrayInputStreamklasę. Z metod tej klasy możemy korzystać nawet po close()wywołaniu metody.

Inne metody ByteArrayInputStream

Metody Opisy
finalize() zapewnia close()wywołanie metody
mark() oznacza pozycję w strumieniu wejściowym, do której zostały odczytane dane
reset() zwraca formant do punktu w strumieniu wejściowym, w którym ustawiono znacznik
markSupported() sprawdza, czy strumień wejściowy obsługuje mark()ireset()

Aby dowiedzieć się więcej, odwiedź stronę Java ByteArrayInputStream (oficjalna dokumentacja Java).

Interesujące artykuły...