public abstract class CharsetEncoder extends Object
The input character sequence is provided in a character buffer or a series of such buffers. The output byte sequence is written to a byte buffer or a series of such buffers. An encoder should always be used by making the following sequence of method invocations, hereinafter referred to as an encoding operation:
Reset the encoder via the reset method, unless it
has not been used before;
Invoke the encode method zero or more times, as
long as additional input may be available, passing false for the
endOfInput argument and filling the input buffer and flushing the
output buffer between invocations;
Invoke the encode method one final time, passing
true for the endOfInput argument; and then
Invoke the flush method so that the encoder can
flush any internal state to the output buffer.
encode method will encode as many
characters as possible from the input buffer, writing the resulting bytes
to the output buffer. The encode method returns when more
input is required, when there is not enough room in the output buffer, or
when an encoding error has occurred. In each case a CoderResult
object is returned to describe the reason for termination. An invoker can
examine this object and fill the input buffer, flush the output buffer, or
attempt to recover from an encoding error, as appropriate, and try again.
There are two general types of encoding errors. If the input character
sequence is not a legal sixteen-bit Unicode sequence then the input is considered malformed. If
the input character sequence is legal but cannot be mapped to a valid
byte sequence in the given charset then an unmappable character has been encountered.
How an encoding error is handled depends upon the action requested for
that type of error, which is described by an instance of the The default action for malformed-input and unmappable-character errors
is to This class is designed to handle many of the details of the encoding
process, including the implementation of error actions. An encoder for a
specific charset, which is a concrete subclass of this class, need only
implement the abstract Instances of this class are not safe for use by multiple concurrent
threads. CodingErrorAction class. The possible error actions are to ignore the erroneous input, report the error to the invoker via
the returned CoderResult object, or replace the erroneous input with the current value of the
replacement byte array. The replacement
is initially set to the encoder's default replacement, which often
(but not always) has the initial value { (byte)'?' };
its value may be changed via the replaceWith method.
report them. The
malformed-input error action may be changed via the onMalformedInput method; the
unmappable-character action may be changed via the onUnmappableCharacter method.
encodeLoop method, which
encapsulates the basic encoding loop. A subclass that maintains internal
state should, additionally, override the implFlush and
implReset methods.
ByteBuffer,
CharBuffer,
Charset,
CharsetDecoder| Modifier | Constructor and Description |
|---|---|
protected |
CharsetEncoder(Charset cs,
float averageBytesPerChar,
float maxBytesPerChar)
Initializes a new encoder.
|
protected |
CharsetEncoder(Charset cs,
float averageBytesPerChar,
float maxBytesPerChar,
byte[] replacement)
Initializes a new encoder.
|
| Modifier and Type | Method and Description |
|---|---|
float |
averageBytesPerChar()
Returns the average number of bytes that will be produced for each
character of input.
|
Charset |
charset()
Returns the charset that created this encoder.
|
protected void |
implReplaceWith(byte[] newReplacement)
Reports a change to this encoder's replacement value.
|
protected void |
implReset()
Resets this encoder, clearing any charset-specific internal state.
|
float |
maxBytesPerChar()
Returns the maximum number of bytes that will be produced for each
character of input.
|
byte[] |
replacement()
Returns this encoder's replacement value.
|
CharsetEncoder |
replaceWith(byte[] newReplacement)
Changes this encoder's replacement value.
|
CharsetEncoder |
reset()
Resets this encoder, clearing any internal state.
|
protected CharsetEncoder(Charset cs, float averageBytesPerChar, float maxBytesPerChar, byte[] replacement)
averageBytesPerChar - A positive float value indicating the expected number of
bytes that will be produced for each input charactermaxBytesPerChar - A positive float value indicating the maximum number of
bytes that will be produced for each input characterreplacement - The initial replacement; must not be null, must have
non-zero length, must not be longer than maxBytesPerChar,
and must be legalIllegalArgumentException - If the preconditions on the parameters do not holdprotected CharsetEncoder(Charset cs, float averageBytesPerChar, float maxBytesPerChar)
averageBytesPerChar - A positive float value indicating the expected number of
bytes that will be produced for each input charactermaxBytesPerChar - A positive float value indicating the maximum number of
bytes that will be produced for each input characterIllegalArgumentException - If the preconditions on the parameters do not holdpublic final Charset charset()
public final byte[] replacement()
public final CharsetEncoder replaceWith(byte[] newReplacement)
This method invokes the implReplaceWith
method, passing the new replacement, after checking that the new
replacement is acceptable.
newReplacement - The new replacement; must not be null, must have
non-zero length, must not be longer than the value returned by
the maxBytesPerChar method, and
must be legalIllegalArgumentException - If the preconditions on the parameter do not holdprotected void implReplaceWith(byte[] newReplacement)
The default implementation of this method does nothing. This method should be overridden by encoders that require notification of changes to the replacement.
newReplacement - public final float averageBytesPerChar()
public final float maxBytesPerChar()
public final CharsetEncoder reset()
This method resets charset-independent state and also invokes the
implReset method in order to perform any
charset-specific reset actions.
protected void implReset()
The default implementation of this method does nothing. This method should be overridden by encoders that maintain internal state.
Copyright © 2017 API Design. All Rights Reserved.