CHAPTER 22: The Package java.io Previous
Previous
Java Language
Java Language
Index
Index
Next
Next

22.18 The Class java.io.ByteArrayOutputStream

22.18.1 buf , 22.18.2 count , 22.18.3 ByteArrayOutputStream , 22.18.4 ByteArrayOutputStream , 22.18.5 write , 22.18.6 write , 22.18.7 size , 22.18.8 reset , 22.18.9 toByteArray , 22.18.10 toString , 22.18.11 toString , 22.18.12 writeTo

A ByteArrayOutputStream contains an internal buffer that accumulates all the bytes written to the stream since its creation or the most recent call to the reset method. At any point, the bytes written to the stream so far may be retrieved in the form of an array of bytes or a String. The bytes written so far may also be copied to some other output stream. The size method returns the number of characters written so far.

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 buf

protected byte[] buf;

An internal array of bytes. Elements buf[0] through buf[count-1] are the bytes that have been written to the stream since its creation or the last reset (S22.18.8) operation.


22.18.2 count

protected int count;

This value should always be nonnegative. It is the number of bytes that have been written to the stream since its creation or the last reset (S22.18.8) operation.


22.18.3 ByteArrayOutputStream

public ByteArrayOutputStream()

This constructor initializes a newly created ByteArrayOutputStream so that its internal buffer array has length 32.


22.18.4 ByteArrayOutputStream

public ByteArrayOutputStream(int size)

This constructor initializes a newly created ByteArrayOutputStream so that its internal buffer array has length size. This matters only for reasons of efficiency; the buffer array is replaced by a larger one whenever necessary to accommodate additional bytes written to the stream.


22.18.5 write

public void write(int b)

One byte is added on the internal buffer. The byte to be added is the eight low- order bits of the argument n. The 24 high-order bits of n are ignored.

Implements the write method of OutputStream (S22.15.1).


22.18.6 write

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

Elements b[off] through b[off+len-1] are appended to the internal buffer.

If b is null, a NullPointerException is thrown.

If off is negative, or len is negative, or off+len is greater than the length of the array b, then an IndexOutOfBoundsException is thrown.

Overrides the write method of OutputStream (S22.15.3).


22.18.7 size

public int size()

The current value of count is returned.


22.18.8 reset

public void reset()

The internal variable count is reset to zero, thereby logically discarding all bytes written to the stream so far. However, the internal buffer array, which may be quite large, remains as it is.


22.18.9 toByteArray

public byte[] toByteArray()

A new array of bytes is created and returned. Its length is equal to the current value of count. Its initial contents are copies of the bytes written to the stream so far-that is, elements 0 through count-1 of buf.


22.18.10 toString

public String toString()

A new String is created and returned. Its length is equal to the current value of count. Its initial contents are copies of the bytes written to the stream so far-that is, elements 0 through count-1 of buf, zero-extended to produce characters. Thus, tostring() has the same effect as toString(0) (S22.18.11).

Overrides the toString method of Object (S20.1.2).


22.18.11 toString

public String toString(int hibyte)

A new array of bytes is created and returned. Its length is equal to the current value of count. Its initial contents are copies of the bytes written to the stream so far-that is, elements 0 through count-1 of buf-with hibyte supplying the high-order eight bits of each character. Thus, character k of the result is equal to:

((hibyte & 0xff) << 8) | (buf[k] & 0xff)

See the String constructor that accepts a hibyte argument (S20.12.6).


22.18.12 writeTo

public void writeTo(OutputStream out) throws IOException

The current contents of the internal buffer are written to the output stream out by the call:

out.write(buf, 0, count)

Note that if out is the same as this, the effect is simply to append to the buffer a copy of its current contents, thereby doubling the number of buffered bytes. This may not be a particularly useful effect; the point is merely that the operation does terminate, having had a sensible effect, rather than running off into an endless loop.

Top© 1996 Sun Microsystems, Inc. All rights reserved.