В этом руководстве мы узнаем о Java ByteArrayInputStream и его методах с помощью примеров.
ByteArrayInputStream
Класс java.io
пакета может быть использован для чтения массива входных данных (в байтах).
Он расширяет InputStream
абстрактный класс.
Примечание . ByteArrayInputStream
Входной поток создается с использованием массива байтов. Он включает внутренний массив для хранения данных этого конкретного массива байтов.
Создайте ByteArrayInputStream
Чтобы создать поток ввода байтового массива, мы должны java.io.ByteArrayInputStream
сначала импортировать пакет. После того, как мы импортируем пакет, вот как мы можем создать входной поток.
// Creates a ByteArrayInputStream that reads entire array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr);
Здесь мы создали входной поток, который считывает все данные из arr
массива. Однако мы также можем создать входной поток, который считывает только некоторые данные из массива.
// Creates a ByteArrayInputStream that reads a portion of array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr, int start, int length);
Здесь входной поток считывает количество байтов, равное длине, из массива, начиная с начальной позиции.
Методы ByteArrayInputStream
ByteArrayInputStream
Класс обеспечивает реализации для различных методов представления в InputStream
классе.
read () Метод
read()
- считывает один байт из массива, присутствующего во входном потокеread(byte() array)
- читает байты из входного потока и сохраняет в указанном массивеread(byte() array, int start, int length)
- считывает из потока количество байтов, равное длине, и сохраняет в указанном массиве, начиная с позиции start
Пример: ByteArrayInputStream для чтения данных
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(); ) ) )
Вывод
Байты, прочитанные из входного потока: 1, 2, 3, 4,
В приведенном выше примере мы создали входной поток байтового массива с именем input
.
ByteArrayInputStream input = new ByteArrayInputStream(array);
Здесь входной поток включает все данные из указанного массива. Для чтения данных из входного потока мы использовали read()
метод.
available () Метод
Чтобы получить количество доступных байтов во входном потоке, мы можем использовать available()
метод. Например,
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(); ) ) )
Вывод
Доступных байтов в начале: 4 Доступных байтов в конце: 2
В приведенном выше примере
- Мы использовали этот
available()
метод, чтобы проверить количество доступных байтов во входном потоке. - Затем мы использовали этот
read()
метод 2 раза, чтобы прочитать 2 байта из входного потока. - Теперь, прочитав 2 байта, мы проверили доступные байты. На этот раз количество доступных байтов уменьшилось на 2.
skip () Метод
Чтобы отбросить и пропустить указанное количество байтов, мы можем использовать skip()
метод. Например,
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(); ) ) )
Вывод
Входной поток после пропуска 2 байтов: 3, 4,
В приведенном выше примере мы использовали метод skip (), чтобы пропустить 2 байта данных из входного потока. Следовательно, 1 и 2 не читаются из входного потока.
close () Метод
Чтобы закрыть входной поток, мы можем использовать close()
метод.
Однако close()
в ByteArrayInputStream
классе этот метод не действует . Мы можем использовать методы этого класса даже после вызова close()
метода.
Другие методы ByteArrayInputStream
Методы | Описания |
---|---|
finalize() | гарантирует, что close() метод вызывается |
mark() | отмечает позицию во входном потоке, до которой были прочитаны данные |
reset() | возвращает элемент управления в точку во входном потоке, где была установлена метка |
markSupported() | проверяет, поддерживает ли входной поток mark() иreset() |
Чтобы узнать больше, посетите Java ByteArrayInputStream (официальная документация Java).