ByteArrayOutputStreampublic class ByteArrayOutputStream extends OutputStream This class implements an output stream in which the data is
written into a byte array. The buffer automatically grows as data
is written to it.
The data can be retrieved using toByteArray() and
toString() . |
Fields Summary |
---|
protected byte[] | bufThe buffer where data is stored. | protected int | countThe number of valid bytes in the buffer. | private boolean | isClosedFlag indicating whether the stream has been closed. |
Constructors Summary |
---|
public ByteArrayOutputStream()Creates a new byte array output stream. The buffer capacity is
initially 32 bytes, though its size increases if necessary.
this(32);
| public ByteArrayOutputStream(int size)Creates a new byte array output stream, with a buffer capacity of
the specified size, in bytes.
if (size < 0) {
throw new IllegalArgumentException("Negative initial size: "
+ size);
}
buf = new byte[size];
|
Methods Summary |
---|
public synchronized void | close()Closes this output stream and releases any system resources
associated with this stream. A closed stream cannot perform
output operations and cannot be reopened.
isClosed = true;
| private void | ensureOpen()Check to make sure that the stream has not been closed
if (isClosed) {
throw new RuntimeException("Writing to closed ByteArrayOutputStream");
}
| public synchronized void | reset()Resets the count field of this byte array output
stream to zero, so that all currently accumulated output in the
output stream is discarded. The output stream can be used again,
reusing the already allocated buffer space.
ensureOpen();
count = 0;
| public int | size()Returns the current size of the buffer.
return count;
| public synchronized byte[] | toByteArray()Creates a newly allocated byte array. Its size is the current
size of this output stream and the valid contents of the buffer
have been copied into it.
if (isClosed && buf.length == count) {
return buf;
} else {
byte newbuf[] = new byte[count];
System.arraycopy(buf, 0, newbuf, 0, count);
return newbuf;
}
| public java.lang.String | toString()Converts the buffer's contents into a string, translating bytes into
characters according to the platform's default character encoding.
return new String(buf, 0, count);
| public synchronized void | write(int b)Writes the specified byte to this byte array output stream.
ensureOpen();
int newcount = count + 1;
if (newcount > buf.length) {
byte newbuf[] = new byte[Math.max(buf.length << 1, newcount)];
System.arraycopy(buf, 0, newbuf, 0, count);
buf = newbuf;
}
buf[count] = (byte)b;
count = newcount;
| public synchronized void | write(byte[] b, int off, int len)Writes len bytes from the specified byte array
starting at offset off to this byte array output stream.
ensureOpen();
if ((off < 0) || (off > b.length) || (len < 0) ||
((off + len) > b.length) || ((off + len) < 0)) {
throw new IndexOutOfBoundsException();
} else if (len == 0) {
return;
}
int newcount = count + len;
if (newcount > buf.length) {
byte newbuf[] = new byte[Math.max(buf.length << 1, newcount)];
System.arraycopy(buf, 0, newbuf, 0, count);
buf = newbuf;
}
System.arraycopy(b, off, buf, count, len);
count = newcount;
|
|