public class WriterOutputStream extends OutputStream
OutputStream
implementation that transforms a byte stream to a
character stream using a specified charset encoding and writes the resulting
stream to a Writer
. The stream is transformed using a
CharsetDecoder
object, guaranteeing that all charset encodings
supported by the JRE are handled correctly.
The output of the CharsetDecoder
is buffered using a fixed size
buffer. This implies that the data is written to the underlying
Writer
in chunks that are no larger than the size of this buffer. By
default, the buffer is flushed only when it overflows or when
flush()
or close()
is called. In general there is therefore
no need to wrap the underlying Writer
in a
BufferedWriter
. WriterOutputStream
can also be
instructed to flush the buffer after each write operation. In this case, all
available data is written immediately to the underlying Writer
,
implying that the current position of the Writer
is correlated to the
current position of the WriterOutputStream
.
WriterOutputStream
implements the inverse transformation of
OutputStreamWriter
; in the following example, writing to
out2 would have the same result as writing to out directly
(provided that the byte sequence is legal with respect to the charset
encoding):
OutputStream out = ... Charset cs = ... OutputStreamWriter writer = new OutputStreamWriter(out, cs); WriterOutputStream out2 = new WriterOutputStream(writer, cs);
WriterOutputStream
implements the same transformation as
InputStreamReader
, except that the control flow is reversed:
both classes transform a byte stream into a character stream, but
InputStreamReader
pulls data from the underlying stream,
while WriterOutputStream
pushes it to the underlying stream.
Note that while there are use cases where there is no alternative to using
this class, very often the need to use this class is an indication of a flaw
in the design of the code. This class is typically used in situations where
an existing API only accepts an OutputStream
object, but where the
stream is known to represent character data that must be decoded for further
use.
Instances of WriterOutputStream
are not thread safe.
org.apache.commons.io.input.ReaderInputStream
Constructor and Description |
---|
WriterOutputStream(Writer writer)
Deprecated.
2.5 use
WriterOutputStream(Writer, Charset) instead |
WriterOutputStream(Writer writer,
Charset charset)
Constructs a new
WriterOutputStream with a default output buffer
size of 1024 characters. |
WriterOutputStream(Writer writer,
CharsetDecoder decoder)
Constructs a new
WriterOutputStream with a default output buffer
size of 1024 characters. |
WriterOutputStream(Writer writer,
CharsetDecoder decoder,
int bufferSize,
boolean writeImmediately)
Constructs a new
WriterOutputStream . |
WriterOutputStream(Writer writer,
Charset charset,
int bufferSize,
boolean writeImmediately)
Constructs a new
WriterOutputStream . |
WriterOutputStream(Writer writer,
String charsetName)
Constructs a new
WriterOutputStream with a default output buffer
size of 1024 characters. |
WriterOutputStream(Writer writer,
String charsetName,
int bufferSize,
boolean writeImmediately)
Constructs a new
WriterOutputStream . |
Modifier and Type | Method and Description |
---|---|
void |
close()
Close the stream.
|
void |
flush()
Flush the stream.
|
void |
write(byte[] b)
Write bytes from the specified byte array to the stream.
|
void |
write(byte[] b,
int off,
int len)
Write bytes from the specified byte array to the stream.
|
void |
write(int b)
Write a single byte to the stream.
|
public WriterOutputStream(Writer writer, CharsetDecoder decoder)
WriterOutputStream
with a default output buffer
size of 1024 characters. The output buffer will only be flushed when it
overflows or when flush()
or close()
is called.writer
- the target Writer
decoder
- the charset decoderpublic WriterOutputStream(Writer writer, CharsetDecoder decoder, int bufferSize, boolean writeImmediately)
WriterOutputStream
.writer
- the target Writer
decoder
- the charset decoderbufferSize
- the size of the output buffer in number of characterswriteImmediately
- If true the output buffer will be flushed after each
write operation, i.e. all available data will be written to the
underlying Writer
immediately. If false, the
output buffer will only be flushed when it overflows or when
flush()
or close()
is called.public WriterOutputStream(Writer writer, Charset charset, int bufferSize, boolean writeImmediately)
WriterOutputStream
.writer
- the target Writer
charset
- the charset encodingbufferSize
- the size of the output buffer in number of characterswriteImmediately
- If true the output buffer will be flushed after each
write operation, i.e. all available data will be written to the
underlying Writer
immediately. If false, the
output buffer will only be flushed when it overflows or when
flush()
or close()
is called.public WriterOutputStream(Writer writer, Charset charset)
WriterOutputStream
with a default output buffer
size of 1024 characters. The output buffer will only be flushed when it
overflows or when flush()
or close()
is called.writer
- the target Writer
charset
- the charset encodingpublic WriterOutputStream(Writer writer, String charsetName, int bufferSize, boolean writeImmediately)
WriterOutputStream
.writer
- the target Writer
charsetName
- the name of the charset encodingbufferSize
- the size of the output buffer in number of characterswriteImmediately
- If true the output buffer will be flushed after each
write operation, i.e. all available data will be written to the
underlying Writer
immediately. If false, the
output buffer will only be flushed when it overflows or when
flush()
or close()
is called.public WriterOutputStream(Writer writer, String charsetName)
WriterOutputStream
with a default output buffer
size of 1024 characters. The output buffer will only be flushed when it
overflows or when flush()
or close()
is called.writer
- the target Writer
charsetName
- the name of the charset encoding@Deprecated public WriterOutputStream(Writer writer)
WriterOutputStream(Writer, Charset)
insteadWriterOutputStream
that uses the default
character encoding and with a default output buffer size of 1024
characters. The output buffer will only be flushed when it overflows or
when flush()
or close()
is called.writer
- the target Writer
public void write(byte[] b, int off, int len) throws IOException
write
in class OutputStream
b
- the byte array containing the bytes to writeoff
- the start offset in the byte arraylen
- the number of bytes to writeIOException
- if an I/O error occurspublic void write(byte[] b) throws IOException
write
in class OutputStream
b
- the byte array containing the bytes to writeIOException
- if an I/O error occurspublic void write(int b) throws IOException
write
in class OutputStream
b
- the byte to writeIOException
- if an I/O error occurspublic void flush() throws IOException
Writer
. After that
Writer.flush()
will be called.flush
in interface Flushable
flush
in class OutputStream
IOException
- if an I/O error occurspublic void close() throws IOException
Writer
. After that
Writer.close()
will be called.close
in interface Closeable
close
in interface AutoCloseable
close
in class OutputStream
IOException
- if an I/O error occursCopyright © 2013-2015 Dandelion Project. All Rights Reserved.