public abstract class CharacterDecoder
extends java.lang.Object
[Buffer Prefix]
[Line Prefix][encoded data atoms][Line Suffix]
[Buffer Suffix]
Of course in the simplest encoding schemes, the buffer has no
distinct prefix of suffix, however all have some fixed relationship
between the text in an 'atom' and the binary data itself.
In the CharacterEncoder and CharacterDecoder classes, one complete
chunk of data is referred to as a buffer. Encoded buffers
are all text, and decoded buffers (sometimes just referred to as
buffers) are binary octets.
To create a custom decoder, you must, at a minimum, overide three
abstract methods in this class.
DecoderClassName: Error message.
Several useful decoders have already been written and are
referenced in the See Also list below.CEFormatException,
CharacterEncoder,
UCDecoder,
UUDecoder,
BASE64Decoder| Constructor and Description |
|---|
CharacterDecoder() |
| Modifier and Type | Method and Description |
|---|---|
protected abstract int |
bytesPerAtom()
Return the number of bytes per atom of decoding
|
protected abstract int |
bytesPerLine()
Return the maximum number of bytes that can be encoded per line
|
protected void |
decodeAtom(java.io.PushbackInputStream aStream,
java.io.OutputStream bStream,
int l)
This method does an actual decode.
|
byte[] |
decodeBuffer(java.io.InputStream in)
Decode the contents of the inputstream into a buffer.
|
void |
decodeBuffer(java.io.InputStream aStream,
java.io.OutputStream bStream)
Decode the text from the InputStream and write the decoded
octets to the OutputStream.
|
byte[] |
decodeBuffer(java.lang.String inputString)
Alternate decode interface that takes a String containing the encoded
buffer and returns a byte array containing the data.
|
protected void |
decodeBufferPrefix(java.io.PushbackInputStream aStream,
java.io.OutputStream bStream)
decode the beginning of the buffer, by default this is a NOP.
|
protected void |
decodeBufferSuffix(java.io.PushbackInputStream aStream,
java.io.OutputStream bStream)
decode the buffer suffix, again by default it is a NOP.
|
java.nio.ByteBuffer |
decodeBufferToByteBuffer(java.io.InputStream in)
Decode the contents of the inputStream into a ByteBuffer.
|
java.nio.ByteBuffer |
decodeBufferToByteBuffer(java.lang.String inputString)
Decode the contents of the String into a ByteBuffer.
|
protected int |
decodeLinePrefix(java.io.PushbackInputStream aStream,
java.io.OutputStream bStream)
This method should return, if it knows, the number of bytes
that will be decoded.
|
protected void |
decodeLineSuffix(java.io.PushbackInputStream aStream,
java.io.OutputStream bStream)
This method post processes the line, if there are error detection
or correction codes in a line, they are generally processed by
this method.
|
protected int |
readFully(java.io.InputStream in,
byte[] buffer,
int offset,
int len)
This method works around the bizarre semantics of BufferedInputStream's
read method.
|
protected abstract int bytesPerAtom()
protected abstract int bytesPerLine()
protected void decodeBufferPrefix(java.io.PushbackInputStream aStream,
java.io.OutputStream bStream)
throws java.io.IOException
java.io.IOExceptionprotected void decodeBufferSuffix(java.io.PushbackInputStream aStream,
java.io.OutputStream bStream)
throws java.io.IOException
java.io.IOExceptionprotected int decodeLinePrefix(java.io.PushbackInputStream aStream,
java.io.OutputStream bStream)
throws java.io.IOException
java.io.IOExceptionprotected void decodeLineSuffix(java.io.PushbackInputStream aStream,
java.io.OutputStream bStream)
throws java.io.IOException
java.io.IOExceptionprotected void decodeAtom(java.io.PushbackInputStream aStream,
java.io.OutputStream bStream,
int l)
throws java.io.IOException
java.io.IOExceptionprotected int readFully(java.io.InputStream in,
byte[] buffer,
int offset,
int len)
throws java.io.IOException
java.io.IOExceptionpublic void decodeBuffer(java.io.InputStream aStream,
java.io.OutputStream bStream)
throws java.io.IOException
CEFormatException - An error has occured while decodingCEStreamExhausted - The input stream is unexpectedly out of datajava.io.IOExceptionpublic byte[] decodeBuffer(java.lang.String inputString)
throws java.io.IOException
CEFormatException - An error has occured while decodingjava.io.IOExceptionpublic byte[] decodeBuffer(java.io.InputStream in)
throws java.io.IOException
java.io.IOExceptionpublic java.nio.ByteBuffer decodeBufferToByteBuffer(java.lang.String inputString)
throws java.io.IOException
java.io.IOExceptionpublic java.nio.ByteBuffer decodeBufferToByteBuffer(java.io.InputStream in)
throws java.io.IOException
java.io.IOExceptionCopyright © 2020. All Rights Reserved.