java.io
Class CharArrayWriter

java.lang.Object
  extended by java.io.Writer
      extended by java.io.CharArrayWriter
All Implemented Interfaces:
Closeable, Flushable, Appendable

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  int count
          The number of chars that have been written to the buffer
 
Fields inherited from class java.io.Writer
lock
 
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
 CharArrayWriter append(char c)
          Appends the Unicode character, c, to the output stream underlying this writer.
 CharArrayWriter append(CharSequence cs)
          Appends the specified sequence of Unicode characters to the output stream underlying this writer.
 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.
 void close()
          Closes the stream.
 void flush()
          This method flushes all buffered chars to the stream.
 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.
 int size()
          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.
 String toString()
          Returns the chars in the internal array as a String.
 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
 void write(int oneChar)
          This method writes the writes the specified char into the internal buffer.
 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.
 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.
 
Methods inherited from class java.io.Writer
write, write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

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

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.

Specified by:
close in interface Closeable
Specified by:
close in class Writer

flush

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

Specified by:
flush in interface Flushable
Specified by:
flush in class Writer

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.

Overrides:
toString in class Object
Returns:
A String containing the data written to this stream so far
See Also:
Object.getClass(), Object.hashCode(), Class.getName(), Integer.toHexString(int)

write

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

Overrides:
write in class Writer
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

Specified by:
write in class Writer
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.

Overrides:
write in class Writer
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)
             throws IOException
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

append

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

Specified by:
append in interface Appendable
Overrides:
append in class Writer
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.

Specified by:
append in interface Appendable
Overrides:
append in class Writer
Parameters:
cs - 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.

Specified by:
append in interface Appendable
Overrides:
append in class Writer
Parameters:
cs - 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