java.io

Class CharArrayWriter

public class CharArrayWriter extends Writer

This class allows data to be written to a char array buffer and and then retrieved by an application. The internal char 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 in increments of 1024 chars. This behavior can be over-ridden by using the following two properties:

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.

Field Summary
protected char[]buf
The internal buffer where the data written is stored
protected intcount
The number of chars that have been written to the buffer
Constructor Summary
CharArrayWriter()
This method initializes a new CharArrayWriter with the default buffer size of 32 chars.
CharArrayWriter(int size)
This method initializes a new CharArrayWriter with a specified initial buffer size.
Method Summary
CharArrayWriterappend(char c)
Appends the Unicode character, c, to the output stream underlying this writer.
CharArrayWriterappend(CharSequence cs)
Appends the specified sequence of Unicode characters to the output stream underlying this writer.
CharArrayWriterappend(CharSequence cs, int start, int end)
Appends the specified subsequence of Unicode characters to the output stream underlying this writer, starting and ending at the specified positions within the sequence.
voidclose()
Closes the stream.
voidflush()
This method flushes all buffered chars to the stream.
voidreset()
This method discards all of the chars that have been written to the internal buffer so far by setting the count variable to 0.
intsize()
This method returns the number of chars that have been written to the buffer so far.
char[]toCharArray()
This method returns a char array containing the chars that have been written to this stream so far.
StringtoString()
Returns the chars in the internal array as a String.
voidwrite(int oneChar)
This method writes the writes the specified char into the internal buffer.
voidwrite(char[] buffer, int offset, int len)
This method writes len chars from the passed in array buf starting at index offset into that buffer
voidwrite(String str, int offset, int len)
This method writes len chars from the passed in String buf starting at index offset into the internal buffer.
voidwriteTo(Writer out)
This method writes all the chars that have been written to this stream from the internal buffer to the specified Writer.

Field Detail

buf

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

count

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

Constructor Detail

CharArrayWriter

public CharArrayWriter()
This method initializes a new CharArrayWriter with the default buffer size of 32 chars. If a different initial buffer size is desired, see the constructor CharArrayWriter(int size).

CharArrayWriter

public CharArrayWriter(int size)
This method initializes a new CharArrayWriter with a specified initial buffer size.

Parameters: size The initial buffer size in chars

Method Detail

append

public CharArrayWriter append(char c)
Appends the Unicode character, c, to the output stream underlying this writer. This is equivalent to write(c).

Parameters: c the character to append.

Returns: a reference to this object.

Since: 1.5

append

public CharArrayWriter append(CharSequence cs)
Appends the specified sequence of Unicode characters to the output stream underlying this writer. This is equivalent to appending the results of calling toString() on the character sequence. As a result, the entire sequence may not be appended, as it depends on the implementation of toString() provided by the CharSequence. For example, if the character sequence is wrapped around an input buffer, the results will depend on the current position and length of that buffer.

Parameters: seq the character sequence to append. If seq is null, then the string "null" (the string representation of null) is appended.

Returns: a reference to this object.

Since: 1.5

append

public CharArrayWriter append(CharSequence cs, int start, int end)
Appends the specified subsequence of Unicode characters to the output stream underlying this writer, starting and ending at the specified positions within the sequence. The behaviour of this method matches the behaviour of writing the result of append(seq.subSequence(start,end)) when the sequence is not null.

Parameters: seq the character sequence to append. If seq is null, then the string "null" (the string representation of null) is appended. start the index of the first Unicode character to use from the sequence. end the index of the last Unicode character to use from the sequence.

Returns: a reference to this object.

Throws: IndexOutOfBoundsException if either of the indices are negative, the start index occurs after the end index, or the end index is beyond the end of the sequence.

Since: 1.5

close

public void close()
Closes the stream. This method is guaranteed not to free the contents of the internal buffer, which can still be retrieved.

flush

public void flush()
This method flushes all buffered chars to the stream.

reset

public void reset()
This method discards all of the chars 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 chars 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 chars that have been written to it.

Returns: The number of chars in the internal buffer

See Also: reset

toCharArray

public char[] toCharArray()
This method returns a char array containing the chars that have been written to this stream so far. This array is a copy of the valid chars in the internal buffer and its length is equal to the number of valid chars, 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 chars in the internal array as a String. The chars 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.

Returns: A String containing the data written to this stream so far

write

public void write(int oneChar)
This method writes the writes the specified char into the internal buffer.

Parameters: oneChar The char to be read passed as an int

write

public void write(char[] buffer, int offset, int len)
This method writes len chars from the passed in array buf starting at index offset into that buffer

Parameters: buffer The char array to write data from offset The index into the buffer to start writing data from len The number of chars to write

write

public void write(String str, int offset, int len)
This method writes len chars from the passed in String buf starting at index offset into the internal buffer.

Parameters: str The String to write data from offset The index into the string to start writing data from len The number of chars to write

writeTo

public void writeTo(Writer out)
This method writes all the chars that have been written to this stream from the internal buffer to the specified Writer.

Parameters: out The Writer to write to

Throws: IOException If an error occurs