Класс Java ByteArrayInputStream
Класс Java ByteArrayInputStream
В этом руководстве мы узнаем о Java ByteArrayInputStream и его методах с помощью примеров.
ByteArrayInputStream
класс java.io
package можно использовать для чтения массива входных данных (в байтах).
Он расширяет 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);
Здесь входной поток считывает количество байтов, равное length из массива, начиная с start положение.
<час>Методы ByteArrayInputStream
ByteArrayInputStream
класс предоставляет реализации для различных методов, представленных в InputStream
класс.
Метод чтения()
read()
- считывает один байт из массива, присутствующего во входном потокеread(byte[] array)
- считывает байты из входного потока и сохраняет в указанном массивеread(byte[] array, int start, int length)
- считывает количество байтов, равное 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();
}
}
}
Вывод
The bytes read from the input stream: 1, 2, 3, 4,
В приведенном выше примере мы создали входной поток байтового массива с именем input
. .
ByteArrayInputStream input = new ByteArrayInputStream(array);
Здесь входной поток включает все данные из указанного массива. Для чтения данных из входного потока мы использовали read()
метод.
доступный() метод
Чтобы получить количество доступных байтов во входном потоке, мы можем использовать 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();
}
}
}
Вывод
Available bytes at the beginning: 4 Available bytes at the end: 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();
}
}
}
Вывод
Input stream after skipping 2 bytes: 3, 4,
В приведенном выше примере мы использовали skip() способ пропустить 2 байта данных из входного потока. Отсюда 1 и 2 не считываются из входного потока.
<час>Метод close()
Чтобы закрыть входной поток, мы можем использовать close()
метод.
Однако close()
метод не действует в ByteArrayInputStream
учебный класс. Мы можем использовать методы этого класса даже после close()
вызывается метод.
Другие методы ByteArrayInputStream
Методы | Описания |
---|---|
finalize() | гарантирует, что close() вызывается метод |
mark() | отмечает позицию во входном потоке, до которой были прочитаны данные |
reset() | возвращает элемент управления в точку во входном потоке, где была установлена метка |
markSupported() | проверяет, поддерживает ли входной поток mark() и reset() |
Чтобы узнать больше, посетите страницу Java ByteArrayInputStream (официальная документация по Java).
java