W tym samouczku za pomocą przykładów nauczymy się języka Java ByteArrayInputStream i jego metod.
ByteArrayInputStream
Klasa java.io
pakietu może być używana do odczytu tablicy danych wejściowych (w bajtach).
Rozszerza InputStream
klasę abstrakcyjną.
Uwaga : w ByteArrayInputStream
programie 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.ByteArrayInputStream
pakiet. 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 arr
tablicy. 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
ByteArrayInputStream
Klasa zawiera implementacje dla różnych sposobów przedstawienia w InputStream
klasie.
read () Metoda
read()
- czyta pojedynczy bajt z tablicy obecnej w strumieniu wejściowymread(byte() array)
- odczytuje bajty ze strumienia wejściowego i przechowuje w określonej tablicyread(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
- Zastosowaliśmy tę
available()
metodę, aby sprawdzić liczbę dostępnych bajtów w strumieniu wejściowym. - Następnie użyliśmy tej
read()
metody 2 razy, aby odczytać 2 bajty ze strumienia wejściowego. - 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 ByteArrayInputStream
klasę. 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).