Класс ByteArrayOutputStream
- java.lang.Object
-
- java.io.OutputStream
-
- java.io.ByteArrayOutputStream
- Все реализованные интерфейсы:
- Closeable, Flushable, AutoCloseable
public class ByteArrayOutputStream extends OutputStream
Этот класс реализует выходной поток, в котором данные записываются в массив байтов. Буфер автоматически увеличивается по мере записи данных в него. Данные могут быть получены с помощью toByteArray() и toString().
Закрытие ByteArrayOutputStream не имеет эффекта. Методы в этом классе могут быть вызваны после закрытия потока без генерации IOException.
- С:
- JDK1.0
Поля
| Модификатор и тип | Поле и описание |
|---|---|
protected byte[] |
buf Буфер, в котором хранятся данные. |
protected int |
count Количество допустимых байтов в буфере. |
Конструкторы
| Конструктор и описание |
|---|
ByteArrayOutputStream() Создаёт новый выходной поток массива байтов. |
ByteArrayOutputStream(int size) Создаёт новый выходной поток массива байтов с ёмкостью буфера заданного размера в байтах. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
close() Закрытие |
void |
reset() Сбрасывает поле |
int |
size() Возвращает текущий размер буфера. |
byte[] |
toByteArray() Создаёт новый выделенный массив байтов. |
String |
toString() Преобразует содержимое буфера в строку, декодируя байты с помощью кодовой таблицы символов по умолчанию платформы. |
String |
toString(int hibyte) Устаревший. Этот метод не правильно преобразует байты в символы. Начиная с JDK 1.1, предпочтительный способ сделать это — через метод |
String |
toString(String charsetName) Преобразует содержимое буфера в строку, декодируя байты с помощью указанной |
void |
write(byte[] b,
int off,
int len) Записывает |
void |
write(int b) Записывает указанный байт в этот выходной поток массива байтов. |
void |
writeTo(OutputStream out) Записывает всё содержимое этого выходного потока массива байтов в указанный выходной поток, как если бы вызывали метод write выходного потока с использованием |
Методы, унаследованные от класса java.io.OutputStream
flush, write Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait Подробное описание полей
buf
protected byte[] buf
Буфер, в котором хранятся данные.
count
protected int count
Количество допустимых байтов в буфере.
Подробное описание конструкторов
ByteArrayOutputStream
public ByteArrayOutputStream()
Создаёт новый выходной поток массива байтов. Емкость буфера изначально составляет 32 байта, хотя её размер увеличивается при необходимости.
ByteArrayOutputStream
public ByteArrayOutputStream(int size)
Создаёт новый выходной поток массива байтов с ёмкостью буфера заданного размера в байтах.
- Параметры:
-
size- начальный размер. - Исключения:
-
IllegalArgumentException- если размер отрицательный.
Подробное описание методов
write
public void write(int b)
Записывает указанный байт в этот выходной поток массива байтов.
- Задано:
-
writeв классеOutputStream - Параметры:
-
b- байт для записи.
write
public void write(byte[] b,
int off,
int len) Записывает len байта из указанного массива байтов, начиная со смещения off, в этот выходной поток массива байтов.
- Переопределено:
-
writeв классеOutputStream - Параметры:
-
b- данные. -
off- начальное смещение в данных. -
len- количество байтов для записи.
writeTo
public void writeTo(OutputStream out)
throws IOException Записывает всё содержимое этого выходного потока массива байтов в указанный выходной поток, как если бы вызывали метод write выходного потока с использованием out.write(buf, 0, count).
- Параметры:
-
out- выходной поток, в который записывать данные. - Исключения:
-
IOException- если происходит ошибка ввода-вывода.
reset
public void reset()
Сбрасывает поле count этого выходного потока массива байтов в ноль, таким образом, все текущие накопленные данные в выходном потоке удаляются. Выходной поток может быть использован повторно, используя уже выделенное пространство буфера.
- См. также:
ByteArrayInputStream.count
toByteArray
public byte[] toByteArray()
Создаёт новый выделенный массив байтов. Его размер равен текущему размеру этого выходного потока, и валидное содержимое буфера было скопировано в него.
- Возвращает:
- текущее содержимое этого выходного потока в виде массива байтов.
- См. также:
size()
size
public int size()
Возвращает текущий размер буфера.
- Возвращает:
- значение поля
count, которое является количеством допустимых байтов в этом выходном потоке. - См. также:
count
toString
public String toString()
Преобразует содержимое буфера в строку, декодируя байты с помощью кодовой таблицы символов по умолчанию платформы. Длина новой String является функцией кодовой таблицы символов и, следовательно, может не совпадать с размером буфера.
Этот метод всегда заменяет некорректные входные данные и последовательности символов, не поддающиеся отображению, строкой замены по умолчанию для кодовой таблицы символов по умолчанию платформы. Класс CharsetDecoder следует использовать, если требуется больший контроль над процессом декодирования.
- Переопределено:
-
toStringв классеObject - Возвращает:
- Строка, декодированная из содержимого буфера.
- С:
- JDK1.1
toString
public String toString(String charsetName)
throws UnsupportedEncodingException Преобразует содержимое буфера в строку, декодируя байты с помощью указанной charset. Длина новой String является функцией кодовой таблицы символов и, следовательно, может не совпадать с длиной массива байтов.
Этот метод всегда заменяет некорректные входные данные и последовательности символов, не поддающиеся отображению, строкой замены по умолчанию для этой кодовой таблицы символов. Класс CharsetDecoder следует использовать, если требуется больший контроль над процессом декодирования.
- Параметры:
-
charsetName- имя поддерживаемойcharset - Возвращает:
- Строка, декодированная из содержимого буфера.
- Исключения:
-
UnsupportedEncodingException- Если указанная кодовая таблица символов не поддерживается - С:
- JDK1.1
toString
@Deprecated public String toString(int hibyte)
Устаревший. Этот метод не правильно преобразует байты в символы. Начиная с JDK 1.1, предпочтительный способ сделать это — через метод toString(String enc) , который принимает аргумент имени кодировки, или метод toString() , который использует кодировку символов по умолчанию платформы.
Создаёт новый выделенный строковый объект. Его размер равен текущему размеру выходного потока, и валидное содержимое буфера было скопировано в него. Каждый символ c в результирующей строке создаётся из соответствующего элемента b в массиве байтов таким образом:
c == (char)(((hibyte & 0xff) << 8) | (b & 0xff))
- Параметры:
-
hibyte- старший байт каждого результирующего символа Юникод. - Возвращает:
- текущее содержимое выходного потока в виде строки.
- См. также:
-
size(),toString(String),toString()
close
public void close()
throws IOException Закрытие ByteArrayOutputStream не имеет эффекта. Методы в этом классе могут быть вызваны после закрытия потока без генерации IOException.
- Задано:
-
closeв интерфейсеCloseable - Задано:
-
closeв интерфейсеAutoCloseable - Переопределено:
-
closeв классеOutputStream - Исключения:
-
IOException- если происходит ошибка ввода-вывода.
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.