java.io

Class CharArrayWriter

Implemented Interfaces:
Appendable, Closeable, Flushable

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

append, append, append, close, flush, write, write, 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 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 Details

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 Details

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 interface 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 interface Writer
Parameters:
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 interface Writer
Parameters:
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.
Specified by:
close in interface Closeable
Overrides:
close in interface Writer

flush

public void flush()
This method flushes all buffered chars to the stream.
Specified by:
flush in interface Flushable
Overrides:
flush in interface 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 interface Object
Returns:
A String containing the data written to this stream so far

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
Overrides:
write in interface 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(int oneChar)
This method writes the writes the specified char into the internal buffer.
Overrides:
write in interface Writer
Parameters:
oneChar - The char to be read passed as an int

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 interface 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

CharArrayWriter.java -- Write chars to a buffer Copyright (C) 1998, 1999, 2001, 2002, 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.