Spec-Zone .ru
спецификации, руководства, описания, API
Содержание | Предыдущий | Следующий | Индекс

22.18 Класс java.io.ByteArrayOutputStream

A ByteArrayOutputStream содержит внутренний буфер, который накапливает все байты, записанные потоку начиная с его создания или нового звонка reset метод. В любой точке байты, записанные потоку до сих пор, могут получаться в форме массива байтов или a String. Байты, записанные до сих пор, могут также копироваться в некоторый другой поток вывода. size метод возвращает число символов, записанных до сих пор.

public class ByteArrayOutputStream extends OutputStream {
	protected byte[] buf;
	protected int count;
	public ByteArrayOutputStream();
	public ByteArrayOutputStream(int size);
	public void write(int b);
	public void write(byte[] b, int off, int len)
		throws NullPointerException, IndexOutOfBoundsException;
	public int size();
	public void reset();
	public byte[] toByteArray();
	public String toString();
	public String toString(int hibyte);
	public void writeTo(OutputStream out) throws IOException;
}

22.18.1 protected byte[] buf;

Внутренний массив байтов. Элементы buf[0] через buf[count-1] байты, которые были записаны потоку начиная с его создания или последнего reset (§22.18.8) работа.

22.18.2 protected int count;

Это значение должно всегда быть неотрицательным. Это - число байтов, которые были записаны потоку начиная с его создания или последнего reset (§22.18.8) работа.

22.18.3 public ByteArrayOutputStream()

Этот конструктор инициализирует недавно создаваемый ByteArrayOutputStream так, чтобы у его внутреннего буферного массива была длина 32.

22.18.4 public ByteArrayOutputStream(int size)

Этот конструктор инициализирует недавно создаваемый ByteArrayOutputStream так, чтобы у его внутреннего буферного массива была длина size. Это имеет значение только по причинам эффективности; буферный массив заменяется большим всякий раз, когда необходимый, чтобы разместить дополнительные байты, записанные потоку.

22.18.5 public void write(int b)

Один байт добавляется на внутреннем буфере. Байт, который будет добавлен, является восемью младшими разрядами - биты параметра n. 24 бита старшего разряда n игнорируются.

Реализации write метод OutputStream (§22.15.1).

22.18.6 public void write(byte[] b, int off, int len)
throws NullPointerException, IndexOutOfBoundsException

Элементы b[off] через b[off+len-1] добавляются к внутреннему буферу.

Если b null, a NullPointerException бросается.

Если off отрицательно, или len отрицательно, или off+len больше чем длина массива b, тогда IndexOutOfBoundsException бросается.

Переопределения write метод OutputStream (§22.15.3).

22.18.7 public int size()

Текущая стоимость count возвращается.

22.18.8 public void reset()

Внутренняя переменная count сбрасывается, чтобы обнулить, таким образом логически отбрасывая все байты, записанные потоку до сих пор. Однако, внутренний буферный массив, который может быть довольно многочисленным, остается, как это.

22.18.9 public byte[] toByteArray()

Новый массив байтов создается и возвращается. Его длина равна текущей стоимости count. Его начальное содержание является копиями байтов, записанных потоку до сих пор - то есть, элементы 0 через count-1 из buf.

22.18.10 public String toString()

Новое String создается и возвращается. Его длина равна текущей стоимости count. Его начальное содержание является копиями байтов, записанных потоку до сих пор - то есть, элементы 0 через count-1 из buf, расширенный до нуля, чтобы произвести символы. Таким образом, tostring() имеет тот же самый эффект как toString(0) (§22.18.11).

Переопределения toString метод Object (§20.1.2).

22.18.11 public String toString(int hibyte)

Новый массив байтов создается и возвращается. Его длина равна текущей стоимости count. Его начальное содержание является копиями байтов, записанных потоку до сих пор - то есть, элементы 0 через count-1 из buf- с hibyte предоставление старшего разряда восемь битов каждого символа. Таким образом, символ k из результата равно:

((hibyte & 0xff) << 8) | (buf[k] & 0xff)
См. String конструктор, который принимает a hibyte параметр (§20.12.6).

22.18.12 public void writeTo(OutputStream out) throws IOException

Текущее содержание внутреннего буфера пишется потоку вывода out вызовом:

out.write(buf, 0, count)
Отметьте это если out то же самое как this, эффект состоит в том, чтобы просто добавить к буферу копию своего текущего содержания, таким образом удваивая число буферизованных байтов. Это, возможно, не особенно полезное действие; точка просто, который работа действительно завершает, имея заметный эффект, вместо того, чтобы убежать в бесконечный цикл.


Содержание | Предыдущий | Следующий | Индекс

Спецификация языка Java (HTML, сгенерированный Блинчиком "сюзет" Pelouch 24 февраля 1998)
Авторское право © Sun Microsystems, Inc 1996 года. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к doug.kramer@sun.com

free hit counter