public class TranscodingPrintStream
extends java.io.PrintStream
When both source and target codepages are single byte encodings, (e.g. ISO-8859-1, IBM-1047)
a direct map can be used, and is the most efficient way to transcode. If one
or both of the codepages are multi-byte (e.g. UTF-8) the CharsetEncoder and
CharsetDecoder classes need to be used. For this case, the Transcoder class
is used. It provides a protocol that accepts an array of source codepage encoded bytes,
and writes the target codepage encoded bytes to a supplied output stream.
| Constructor and Description |
|---|
TranscodingPrintStream(java.io.OutputStream out,
boolean autoFlush,
java.lang.String targetEncoding,
boolean enable)
Create a new transcoding print stream.
|
TranscodingPrintStream(java.io.OutputStream out,
boolean autoFlush,
java.lang.String sourceEncoding,
java.lang.String targetEncoding,
boolean enable)
Create a new transcoding print stream.
|
| Modifier and Type | Method and Description |
|---|---|
void |
flush()
Overridden to flush the transcoder if one is being used.
|
byte[] |
getTranslateTable()
Answer the translate table in place.
|
boolean |
isActive()
Answer whether this PrintStream is actively transcoding.
|
void |
write(byte[] buf,
int off,
int len)
Override
PrintStream.write(byte[], int, int)
to transcode bytes from the default encoding to the target encoding. |
void |
write(int b)
Override
PrintStream.write(int b)
to transcode bytes from the default encoding to the target encoding. |
public TranscodingPrintStream(java.io.OutputStream out,
boolean autoFlush,
java.lang.String targetEncoding,
boolean enable)
throws java.io.UnsupportedEncodingException
out - The output stream to which values and objects will be
printedautoFlush - A boolean; if true, the output buffer will be flushed
whenever a byte array is written, one of the
println methods is invoked, or a newline
character or byte ('\n') is writtentargetEncoding - The String naming the encoding to use, both
for the internal OutputStreamWriter and for
translating write(byte[]) IOStream messages
sent to this objectjava.io.UnsupportedEncodingExceptionPrintStream.PrintStream(java.io.OutputStream, boolean),
PrintWriter.PrintWriter(java.io.OutputStream, boolean)public TranscodingPrintStream(java.io.OutputStream out,
boolean autoFlush,
java.lang.String sourceEncoding,
java.lang.String targetEncoding,
boolean enable)
throws java.io.UnsupportedEncodingException
out - The output stream to which values and objects will be
printedautoFlush - A boolean; if true, the output buffer will be flushed
whenever a byte array is written, one of the
println methods is invoked, or a newline
character or byte ('\n') is writtensourceEncoding - The String naming the encoding that is the source
encoding for the transcoder. If null, the default
will be used (the "file.encoding" System property)targetEncoding - The String naming the encoding to use, both
for the internal OutputStreamWriter and for
translating write(byte[]) IOStream messages
sent to this objectjava.io.UnsupportedEncodingExceptionPrintStream.PrintStream(java.io.OutputStream, boolean),
PrintWriter.PrintWriter(java.io.OutputStream, boolean)public void write(int b)
PrintStream.write(int b)
to transcode bytes from the default encoding to the target encoding.write in class java.io.PrintStreampublic void write(byte[] buf,
int off,
int len)
PrintStream.write(byte[], int, int)
to transcode bytes from the default encoding to the target encoding.write in class java.io.PrintStreampublic boolean isActive()
public byte[] getTranslateTable()
public void flush()
flush in interface java.io.Flushableflush in class java.io.PrintStream