English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве мы будем изучать Java ByteArrayOutputStream и его методы с помощью примеров.
Класс ByteArrayOutputStream из пакета java.io можно использовать для записи данных массива вывода (в байтах).
Он наследуется от абстрактного класса OutputStream.
ВниманиеВ ByteArrayOutputStream поддерживается внутренний массив байтов для хранения данных.
Для создания потока вывода массива байтов мы должны сначала импортировать пакет java.io.ByteArrayOutputStream. После импорта пакета мы можем создать поток.
//Создание ByteArrayOutputStream по умолчанию ByteArrayOutputStream out = new ByteArrayOutputStream();
Здесь мы создали поток вывода, который записывает данные в массив байтов по умолчанию размером 32 байта. Но мы можем изменить размер массива по умолчанию.
//Создание ByteArrayOutputStream с заданным размером ByteArrayOutputStream out = new ByteArrayOutputStream(int size);
Здесь размер указывает на длину массива.
Класс ByteArrayOutputStream предоставляет различные реализации методов, существующих в классе OutputStream.
write(int byte) -将指定的字节写入输出流
write(byte[] array) -将指定数组中的字节写入输出流
write(byte[] arr, int start, int length)-写入从位置start开始的等于length的字节数到数组的输出流
writeTo(ByteArrayOutputStream out1) -写入当前输出流的全部数据到指定的输出流
import java.io.ByteArrayOutputStream; class Main { public static void main(String[] args) { String data = "This is a line of text inside the string."; try { //Создает поток вывода ByteArrayOutputStream out = new ByteArrayOutputStream(); byte[] array = data.getBytes(); //Записывает данные в поток вывода out.write(array); //Получает данные из потока вывода в виде строки String streamData = out.toString(); System.out.println("Поток вывода: " + streamData); out.close(); } catch(Exception e) { e.getStackTrace(); } } }
Результат вывода
Поток вывода: This is a line of text inside the string.
В上面的 примере мы создали поток вывода с именем output.
ByteArrayOutputStream output = new ByteArrayOutputStream();
Чтобы записать данные в поток вывода, мы используем метод write().
Внимание:Метод getBytes() в программе преобразует строку в массив байтов.
toByteArray() - Возвращает массив байтов, существующий в потоке вывода
toString() - Возвращает все данные потока вывода в виде строки
Например:
import java.io.ByteArrayOutputStream; class Main { public static void main(String[] args) { String data = "This is data."; try { //Создает поток вывода ByteArrayOutputStream out = new ByteArrayOutputStream(); //Записывает данные в поток вывода out.write(data.getBytes()); //Возвращает массив байтов byte[] byteData = out.toByteArray(); System.out.print("Использование данных toByteArray(): "); for(int i=0; i<byteData.length; i++) { System.out.print((char)byteData[i]); } //Возвращает строку String stringData = out.toString(); System.out.println("\nИспользование данных toString(): " + stringData); out.close(); } catch(Exception e) { e.getStackTrace(); } } }
Результат вывода
Использование данных toByteArray(): This is data. Использование данных toString(): This is data.
В примере выше был создан массив байт для хранения данных, возвращенных методом toByteArray().
Затем использовать цикл for для доступа к каждому байту в массиве. Здесь, с помощью типа преобразования каждый байт преобразуется в соответствующий символ.
Чтобы закрыть поток вывода, мы можем использовать метод close().
Однако, метод close() в классе ByteArrayOutputStream неэффективен. Даже если был вызван метод close(), мы можем использовать методы этого класса.
Метод | Описание содержимого |
---|---|
size() | Вернуть размер массива в потоке вывода |
flush() | Очистить поток вывода |