public class Base64InputStream extends FilterInputStream
The default behavior of the Base64InputStream is to DECODE, whereas the default behavior of the Base64OutputStream is to ENCODE, but this behavior can be overridden by using a different constructor.
This class implements section 6.8. Base64 Content-Transfer-Encoding from RFC 2045 Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies by Freed and Borenstein.
Since this class operates directly on byte streams, and not character streams, it is hard-coded to only encode/decode character encodings which are compatible with the lower 127 ASCII chart (ISO-8859-1, Windows-1252, UTF-8, etc).
You can set the decoding behavior when the input bytes contain leftover trailing bits that cannot be created by a valid encoding. These can be bits that are unused from the final character or entire characters. The default mode is lenient decoding.
IllegalArgumentException if trailing bits are not part of a valid
encoding. Any unused bits from the final character must be zero. Impossible counts of entire final characters are not
allowed.
When strict decoding is enabled it is expected that the decoded bytes will be re-encoded to a byte array that matches the original, i.e. no changes occur on the final character. This requires that the input bytes use the same padding and alphabet as the encoder.
in| Constructor and Description |
|---|
Base64InputStream(InputStream inputStream)
Creates a Base64InputStream such that all data read is Base64-decoded from the original provided InputStream.
|
| Modifier and Type | Method and Description |
|---|---|
int |
available() |
boolean |
isStrictDecoding()
Returns true if decoding behavior is strict.
|
void |
mark(int readLimit)
Marks the current position in this input stream.
|
boolean |
markSupported() |
int |
read()
Reads one
byte from this input stream. |
int |
read(byte[] array,
int offset,
int len)
Attempts to read
len bytes into the specified b array starting at offset
from this InputStream. |
void |
reset()
Repositions this stream to the position at the time the mark method was last called on this input stream.
|
long |
skip(long n) |
close, readpublic Base64InputStream(InputStream inputStream)
inputStream - InputStream to wrap.public int available()
throws IOException
available in class FilterInputStream0 if the InputStream has reached EOF,
1 otherwiseIOExceptionpublic boolean isStrictDecoding()
IllegalArgumentException if trailing bits are not part of a valid encoding.
The default is false for lenient encoding. Decoding will compose trailing bits into 8-bit bytes and discard the remainder.
public void mark(int readLimit)
The mark(int) method of BaseNCodecInputStream does nothing.
mark in class FilterInputStreamreadLimit - the maximum limit of bytes that can be read before the mark position becomes invalid.markSupported()public boolean markSupported()
markSupported in class FilterInputStreamfalsepublic int read()
throws IOException
byte from this input stream.read in class FilterInputStreamIOException - if an I/O error occurs.public int read(byte[] array,
int offset,
int len)
throws IOException
len bytes into the specified b array starting at offset
from this InputStream.read in class FilterInputStreamarray - destination byte arrayoffset - where to start writing the byteslen - maximum number of bytes to readIOException - if an I/O error occurs.NullPointerException - if the byte array parameter is nullIndexOutOfBoundsException - if offset, len or buffer size are invalidpublic void reset()
throws IOException
The reset() method of BaseNCodecInputStream does nothing except throw an IOException.
reset in class FilterInputStreamIOException - if this method is invokedpublic long skip(long n)
throws IOException
skip in class FilterInputStreamIllegalArgumentException - if the provided skip length is negativeIOExceptionCopyright © 2014–2024 jsonwebtoken.io. All rights reserved.