java.io

Class ByteArrayOutputStream

Implemented Interfaces:
AutoCloseable, Closeable, Flushable
Known Direct Subclasses:
AligningOutput

public class ByteArrayOutputStream
extends OutputStream

This class allows data to be written to a byte array buffer and and then retrieved by an application. The internal byte array buffer is dynamically resized to hold all the data written. Please be aware that writing large amounts to data to this stream will cause large amounts of memory to be allocated.

The size of the internal buffer defaults to 32 and it is resized by doubling the size of the buffer. This default size can be overridden by using the gnu.java.io.ByteArrayOutputStream.initialBufferSize property.

There is a constructor that specified the initial buffer size and that is the preferred way to set that value because it it portable across all Java class library implementations.

Note that this class also has methods that convert the byte array buffer to a String using either the system default or an application specified character encoding. Thus it can handle multibyte character encodings.

Field Summary

protected byte[]
buf
The internal buffer where the data written is stored
protected int
count
The number of bytes that have been written to the buffer

Constructor Summary

ByteArrayOutputStream()
This method initializes a new ByteArrayOutputStream with the default buffer size of 32 bytes.
ByteArrayOutputStream(int size)
This method initializes a new ByteArrayOutputStream with a specified initial buffer size.

Method Summary

void
reset()
This method discards all of the bytes that have been written to the internal buffer so far by setting the count variable to 0.
int
size()
This method returns the number of bytes that have been written to the buffer so far.
byte[]
toByteArray()
This method returns a byte array containing the bytes that have been written to this stream so far.
String
toString()
Returns the bytes in the internal array as a String.
String
toString(int hibyte)
Deprecated.
String
toString(String enc)
Returns the bytes in the internal array as a String.
void
write(byte[] buffer, int offset, int add)
This method writes len bytes from the passed in array buf starting at index offset into the internal buffer.
void
write(int oneByte)
This method writes the writes the specified byte into the internal buffer.
void
writeTo(OutputStream out)
This method writes all the bytes that have been written to this stream from the internal buffer to the specified OutputStream.

Methods inherited from class java.io.OutputStream

close, flush, write, write, write

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

buf

protected byte[] buf
The internal buffer where the data written is stored

count

protected int count
The number of bytes that have been written to the buffer

Constructor Details

ByteArrayOutputStream

public ByteArrayOutputStream()
This method initializes a new ByteArrayOutputStream with the default buffer size of 32 bytes. If a different initial buffer size is desired, see the constructor ByteArrayOutputStream(int size). For applications where the source code is not available, the default buffer size can be set using the system property gnu.java.io.ByteArrayOutputStream.initialBufferSize

ByteArrayOutputStream

public ByteArrayOutputStream(int size)
This method initializes a new ByteArrayOutputStream with a specified initial buffer size.
Parameters:
size - The initial buffer size in bytes

Method Details

reset

public void reset()
This method discards all of the bytes that have been written to the internal buffer so far by setting the count variable to 0. The internal buffer remains at its currently allocated size.

size

public int size()
This method returns the number of bytes that have been written to the buffer so far. This is the same as the value of the protected count variable. If the reset method is called, then this value is reset as well. Note that this method does not return the length of the internal buffer, but only the number of bytes that have been written to it.
Returns:
The number of bytes in the internal buffer
See Also:
reset()

toByteArray

public byte[] toByteArray()
This method returns a byte array containing the bytes that have been written to this stream so far. This array is a copy of the valid bytes in the internal buffer and its length is equal to the number of valid bytes, not necessarily to the the length of the current internal buffer. Note that since this method allocates a new array, it should be used with caution when the internal buffer is very large.

toString

public String toString()
Returns the bytes in the internal array as a String. The bytes in the buffer are converted to characters using the system default encoding. There is an overloaded toString() method that allows an application specified character encoding to be used.
Overrides:
toString in interface Object
Returns:
A String containing the data written to this stream so far

toString

public String toString(int hibyte)

Deprecated.

This method returns the bytes in the internal array as a String. It uses each byte in the array as the low order eight bits of the Unicode character value and the passed in parameter as the high eight bits.

This method does not convert bytes to characters in the proper way and so is deprecated in favor of the other overloaded toString methods which use a true character encoding.

Parameters:
hibyte - The high eight bits to use for each character in the String
Returns:
A String containing the data written to this stream so far

toString

public String toString(String enc)
            throws UnsupportedEncodingException
Returns the bytes in the internal array as a String. The bytes in the buffer are converted to characters using the specified encoding.
Parameters:
enc - The name of the character encoding to use
Returns:
A String containing the data written to this stream so far
Throws:
UnsupportedEncodingException - If the named encoding is not available

write

public void write(byte[] buffer,
                  int offset,
                  int add)
This method writes len bytes from the passed in array buf starting at index offset into the internal buffer.
Overrides:
write in interface OutputStream
Parameters:
buffer - The byte array to write data from
offset - The index into the buffer to start writing data from
add - The number of bytes to write

write

public void write(int oneByte)
This method writes the writes the specified byte into the internal buffer.
Overrides:
write in interface OutputStream
Parameters:
oneByte - The byte to be read passed as an int

writeTo

public void writeTo(OutputStream out)
            throws IOException
This method writes all the bytes that have been written to this stream from the internal buffer to the specified OutputStream.
Parameters:
out - The OutputStream to write to
Throws:
IOException - If an error occurs

BufferedReader.java Copyright (C) 1998, 1999, 2000, 2001, 2003, 2005 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.