Class WriterOutputStream
- All Implemented Interfaces:
- Closeable,- Flushable,- AutoCloseable
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):
 
 To build an instance, use WriterOutputStream.Builder.
 
OutputStream out = ... Charset cs = ... OutputStreamWriter writer = new OutputStreamWriter(out, cs); WriterOutputStream out2 = WriterOutputStream.builder() .setWriter(writer) .setCharset(cs) .get();
 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.
 
- Since:
- 2.0
- See Also:
- 
Nested Class SummaryNested Classes
- 
Constructor SummaryConstructorsConstructorDescriptionWriterOutputStream(Writer writer) Deprecated.WriterOutputStream(Writer writer, String charsetName) Deprecated.WriterOutputStream(Writer writer, String charsetName, int bufferSize, boolean writeImmediately) Deprecated.WriterOutputStream(Writer writer, Charset charset) Deprecated.WriterOutputStream(Writer writer, CharsetDecoder decoder) Deprecated.WriterOutputStream(Writer writer, CharsetDecoder decoder, int bufferSize, boolean writeImmediately) Deprecated.WriterOutputStream(Writer writer, Charset charset, int bufferSize, boolean writeImmediately) Deprecated.
- 
Method SummaryModifier and TypeMethodDescriptionstatic WriterOutputStream.Builderbuilder()Constructs a newWriterOutputStream.Builder.voidclose()Close the stream.voidflush()Flush the stream.voidwrite(byte[] b) Writes bytes from the specified byte array to the stream.voidwrite(byte[] b, int off, int len) Writes bytes from the specified byte array to the stream.voidwrite(int b) Writes a single byte to the stream.
- 
Constructor Details- 
WriterOutputStreamDeprecated.Constructs a newWriterOutputStreamthat uses the virtual machine'sdefault charsetand with a default output buffer size of 8192 characters. The output buffer will only be flushed when it overflows or whenflush()orclose()is called.- Parameters:
- writer- the target- Writer
 
- 
WriterOutputStreamDeprecated.Constructs a newWriterOutputStreamwith a default output buffer size of 8192 characters. The output buffer will only be flushed when it overflows or whenflush()orclose()is called.- Parameters:
- writer- the target- Writer
- charset- the charset encoding
 
- 
WriterOutputStream@Deprecated public WriterOutputStream(Writer writer, Charset charset, int bufferSize, boolean writeImmediately) Deprecated.Constructs a newWriterOutputStream.- Parameters:
- writer- the target- Writer
- charset- the charset encoding
- bufferSize- the size of the output buffer in number of characters
- writeImmediately- If- truethe output buffer will be flushed after each write operation, meaning all available data will be written to the underlying- Writerimmediately. If- false, the output buffer will only be flushed when it overflows or when- flush()or- close()is called.
 
- 
WriterOutputStreamDeprecated.Constructs a newWriterOutputStreamwith a default output buffer size of 8192 characters. The output buffer will only be flushed when it overflows or whenflush()orclose()is called.- Parameters:
- writer- the target- Writer
- decoder- the charset decoder
- Since:
- 2.1
 
- 
WriterOutputStream@Deprecated public WriterOutputStream(Writer writer, CharsetDecoder decoder, int bufferSize, boolean writeImmediately) Deprecated.Constructs a newWriterOutputStream.- Parameters:
- writer- the target- Writer
- decoder- the charset decoder
- bufferSize- the size of the output buffer in number of characters
- writeImmediately- If- truethe output buffer will be flushed after each write operation, meaning all available data will be written to the underlying- Writerimmediately. If- false, the output buffer will only be flushed when it overflows or when- flush()or- close()is called.
- Since:
- 2.1
 
- 
WriterOutputStreamDeprecated.Constructs a newWriterOutputStreamwith a default output buffer size of 8192 characters. The output buffer will only be flushed when it overflows or whenflush()orclose()is called.- Parameters:
- writer- the target- Writer
- charsetName- the name of the charset encoding
 
- 
WriterOutputStream@Deprecated public WriterOutputStream(Writer writer, String charsetName, int bufferSize, boolean writeImmediately) Deprecated.Constructs a newWriterOutputStream.- Parameters:
- writer- the target- Writer
- charsetName- the name of the charset encoding
- bufferSize- the size of the output buffer in number of characters
- writeImmediately- If- truethe output buffer will be flushed after each write operation, meaning all available data will be written to the underlying- Writerimmediately. If- false, the output buffer will only be flushed when it overflows or when- flush()or- close()is called.
 
 
- 
- 
Method Details- 
builderConstructs a newWriterOutputStream.Builder.- Returns:
- a new WriterOutputStream.Builder.
- Since:
- 2.12.0
 
- 
closeClose the stream. Any remaining content accumulated in the output buffer will be written to the underlyingWriter. After thatWriter.close()will be called.- Specified by:
- closein interface- AutoCloseable
- Specified by:
- closein interface- Closeable
- Overrides:
- closein class- OutputStream
- Throws:
- IOException- if an I/O error occurs.
 
- 
flushFlush the stream. Any remaining content accumulated in the output buffer will be written to the underlyingWriter. After thatWriter.flush()will be called.- Specified by:
- flushin interface- Flushable
- Overrides:
- flushin class- OutputStream
- Throws:
- IOException- if an I/O error occurs.
 
- 
writeWrites bytes from the specified byte array to the stream.- Overrides:
- writein class- OutputStream
- Parameters:
- b- the byte array containing the bytes to write
- Throws:
- IOException- if an I/O error occurs.
 
- 
writeWrites bytes from the specified byte array to the stream.- Overrides:
- writein class- OutputStream
- Parameters:
- b- the byte array containing the bytes to write
- off- the start offset in the byte array
- len- the number of bytes to write
- Throws:
- IOException- if an I/O error occurs.
 
- 
writeWrites a single byte to the stream.- Specified by:
- writein class- OutputStream
- Parameters:
- b- the byte to write
- Throws:
- IOException- if an I/O error occurs.
 
 
- 
builder(),WriterOutputStream.Builder, andWriterOutputStream.Builder.get()