@Immutable public final class Base64 extends Object
Encodes and decodes to and from Base64 notation.
Homepage: http://iharder.net/base64.
Example:
String encoded = Base64.encode( myByteArray ); byte[] myByteArray = Base64.decode( encoded );
The options parameter, which appears in a few places, is used to pass several pieces of information to the encoder. In the "higher level" methods such as encodeBytes( bytes, options ) the options parameter can be used to indicate such things as first gzipping the bytes before encoding them, not inserting linefeeds, and encoding using the URL-safe and Ordered dialects.
Note, according to RFC3548, Section 2.1, implementations should not add line feeds unless explicitly told to do so. I've got Base64 set to this behavior now, although earlier versions broke lines by default.
The constants defined in Base64 can be OR-ed together to combine options, so you might make a call like this:
String encoded = Base64.encodeBytes( mybytes, Base64.GZIP | Base64.DO_BREAK_LINES );
to compress the data before encoding it and then making the output have newline characters.
Also...
String encoded = Base64.encodeBytes( crazyString.getBytes() );
Change Log:
encodeFromFile(java.lang.String) where estimated buffer size
was wrong for files of size 31, 34, and 37 bytes.decodeToObject(java.lang.String, int, java.lang.ClassLoader) method.
encodeBytesToBytes(byte[]) family of
methods (and not using the gzip options which uses a different mechanism with
streams and stuff).encodeBytesToBytes(byte[], int, int, int) and
some similar helper methods to be more efficient with memory by not returning
a String but just a byte array.I am placing this code in the Public Domain. Do with it as you will. This software comes with no guarantees or warranties but with plenty of well-wishing instead! Please visit http://iharder.net/base64 periodically to check for updates or to contribute improvements.
| Modifier and Type | Field and Description |
|---|---|
static int |
DECODE
Specify decoding in first bit.
|
static int |
DO_BREAK_LINES
Do break lines when encoding.
|
static int |
DONT_GUNZIP
Specify that gzipped data should not be automatically gunzipped.
|
static int |
ENCODE
Specify encoding in first bit.
|
static byte |
EQUALS_SIGN
The equals sign (=) as a byte.
|
static int |
GZIP
Specify that data should be gzip-compressed in second bit.
|
static int |
MAX_LINE_LENGTH
Maximum line length (76) of Base64 output.
|
static byte |
NEW_LINE
The new line character (\n) as a byte.
|
static int |
NO_OPTIONS
No options specified.
|
static int |
ORDERED
Encode using the special "ordered" dialect of Base64 described here:
http://www.faqs.org/qa/
rfcc- 1940. html.
|
static Charset |
PREFERRED_ENCODING
Preferred encoding.
|
static int |
URL_SAFE
Encode using Base64-like encoding that is URL- and Filename-safe as
described in Section 4 of RFC3548:
http://www.faqs.org/rfcs/
rfc3548.html.
|
| Modifier and Type | Method and Description |
|---|---|
static byte[] |
decode(byte[] source)
Low-level access to decoding ASCII characters in the form of a byte array.
|
static byte[] |
decode(byte[] source,
int options)
Low-level access to decoding ASCII characters in the form of a byte array.
|
static byte[] |
decode(byte[] aSource,
int nOfs,
int nLen,
int nOptions)
Low-level access to decoding ASCII characters in the form of a byte array.
|
static byte[] |
decode(String s)
Decodes data from Base64 notation, automatically detecting gzip-compressed
data and decompressing it.
|
static byte[] |
decode(String s,
int options)
Decodes data from Base64 notation, automatically detecting gzip-compressed
data and decompressing it.
|
static void |
decodeFileToFile(String infile,
String outfile)
Reads infile and decodes it to outfile.
|
static byte[] |
decodeFromFile(String filename)
Convenience method for reading a base64-encoded file and decoding it.
|
static void |
decodeToFile(String dataToDecode,
String filename)
Convenience method for decoding data to a file.
|
static Object |
decodeToObject(String encodedObject)
Attempts to decode Base64 data and deserialize a Java Object within.
|
static Object |
decodeToObject(String encodedObject,
int options,
ClassLoader loader)
Attempts to decode Base64 data and deserialize a Java Object within.
|
static void |
encode(ByteBuffer raw,
ByteBuffer encoded)
Performs Base64 encoding on the
raw ByteBuffer, writing it to
the encoded ByteBuffer. |
static void |
encode(ByteBuffer raw,
CharBuffer encoded)
Performs Base64 encoding on the
raw ByteBuffer, writing it to
the encoded CharBuffer. |
static String |
encodeBytes(byte[] source)
Encodes a byte array into Base64 notation.
|
static String |
encodeBytes(byte[] source,
int options)
Encodes a byte array into Base64 notation.
|
static String |
encodeBytes(byte[] source,
int off,
int len)
Encodes a byte array into Base64 notation.
|
static String |
encodeBytes(byte[] source,
int off,
int len,
int nOptions)
Encodes a byte array into Base64 notation.
|
static byte[] |
encodeBytesToBytes(byte[] source)
Similar to
encodeBytes(byte[]) but returns a byte array instead of
instantiating a String. |
static byte[] |
encodeBytesToBytes(byte[] aSource,
int nOfs,
int nLen,
int nOptions)
Similar to
encodeBytes(byte[], int, int, int) but returns a byte
array instead of instantiating a String. |
static void |
encodeFileToFile(String infile,
String outfile)
Reads infile and encodes it to outfile.
|
static String |
encodeFromFile(String filename)
Convenience method for reading a binary file and base64-encoding it.
|
static String |
encodeObject(Serializable serializableObject)
Serializes an object and returns the Base64-encoded version of that
serialized object.
|
static String |
encodeObject(Serializable aSerializableObject,
int nOptions)
Serializes an object and returns the Base64-encoded version of that
serialized object.
|
static void |
encodeToFile(byte[] aDataToEncode,
String sFilename)
Convenience method for encoding data to a file.
|
static byte[] |
safeDecode(byte[] aEncodedBytes)
Decode the byte array.
|
static byte[] |
safeDecode(byte[] aEncodedBytes,
int nOptions)
Decode the byte array.
|
static byte[] |
safeDecode(byte[] aEncodedBytes,
int nOfs,
int nLen)
Decode the byte array.
|
static byte[] |
safeDecode(byte[] aEncodedBytes,
int nOfs,
int nLen,
int nOptions)
Decode the byte array.
|
static byte[] |
safeDecode(String sEncoded)
Decode the string with the default encoding (US-ASCII is the preferred
one).
|
static byte[] |
safeDecode(String sEncoded,
int nOptions)
Decode the string with the default encoding (US-ASCII is the preferred
one).
|
static String |
safeDecodeAsString(byte[] aEncodedBytes,
Charset aCharset)
Decode the byte array and convert it to a string.
|
static String |
safeDecodeAsString(byte[] aEncodedBytes,
int nOfs,
int nLength,
Charset aCharset)
Decode the byte array and convert it to a string.
|
static String |
safeDecodeAsString(String sEncoded,
Charset aCharset)
Decode the string and convert it back to a string.
|
static String |
safeEncode(String s,
Charset aCharset) |
static String |
safeEncodeBytes(byte[] aDecoded) |
static String |
safeEncodeBytes(byte[] aDecoded,
int nOptions) |
static String |
safeEncodeBytes(byte[] aDecoded,
int nOfs,
int nLen) |
static String |
safeEncodeBytes(byte[] aDecoded,
int nOfs,
int nLen,
int nOptions) |
static byte[] |
safeEncodeBytesToBytes(byte[] aDecoded) |
static byte[] |
safeEncodeBytesToBytes(byte[] aDecoded,
int nOptions) |
static byte[] |
safeEncodeBytesToBytes(byte[] aDecoded,
int nOfs,
int nLen) |
static byte[] |
safeEncodeBytesToBytes(byte[] aDecoded,
int nOfs,
int nLen,
int nOptions) |
public static final int NO_OPTIONS
public static final int ENCODE
public static final int DECODE
public static final int GZIP
public static final int DONT_GUNZIP
public static final int DO_BREAK_LINES
public static final int URL_SAFE
public static final int ORDERED
public static final int MAX_LINE_LENGTH
public static final byte EQUALS_SIGN
public static final byte NEW_LINE
public static final Charset PREFERRED_ENCODING
public static void encode(@Nonnull ByteBuffer raw, @Nonnull ByteBuffer encoded)
raw ByteBuffer, writing it to
the encoded ByteBuffer. This is an experimental feature.
Currently it does not pass along any options (such as
DO_BREAK_LINES or GZIP.raw - input bufferencoded - output bufferpublic static void encode(@Nonnull ByteBuffer raw, @Nonnull CharBuffer encoded)
raw ByteBuffer, writing it to
the encoded CharBuffer. This is an experimental feature.
Currently it does not pass along any options (such as
DO_BREAK_LINES or GZIP.raw - input bufferencoded - output bufferpublic static String encodeObject(@Nonnull Serializable serializableObject) throws IOException
As of v 2.3, if the object cannot be serialized or there is another error, the method will throw an IOException. This is new to v2.3! In earlier versions, it just returned a null value, but in retrospect that's a pretty poor way to handle it.
The object is not GZip-compressed before being encoded.serializableObject - The object to encodeIOException - if there is an errorNullPointerException - if serializedObject is null@Nonnull public static String encodeObject(@Nonnull Serializable aSerializableObject, int nOptions) throws IOException
As of v 2.3, if the object cannot be serialized or there is another error, the method will throw an IOException. This is new to v2.3! In earlier versions, it just returned a null value, but in retrospect that's a pretty poor way to handle it.
The object is not GZip-compressed before being encoded.Example options:
GZIP: gzip-compresses object before encoding it. DO_BREAK_LINES: break lines at 76 characters
Example: encodeObject( myObj, Base64.GZIP ) or
Example:
encodeObject( myObj, Base64.GZIP | Base64.DO_BREAK_LINES )
aSerializableObject - The object to encodenOptions - Specified optionsIOException - if there is an errorGZIP,
DO_BREAK_LINES@Nonnull public static String encodeBytes(@Nonnull byte[] source)
source - The data to convertNullPointerException - if source array is null@Nonnull public static String encodeBytes(@Nonnull byte[] source, int options) throws IOException
Example options:
GZIP: gzip-compresses object before encoding it.
DO_BREAK_LINES: break lines at 76 characters
Note: Technically, this makes your encoding non-compliant.
Example: encodeBytes( myData, Base64.GZIP ) or
Example:
encodeBytes( myData, Base64.GZIP | Base64.DO_BREAK_LINES )
As of v 2.3, if there is an error with the GZIP stream, the method will throw an IOException. This is new to v2.3! In earlier versions, it just returned a null value, but in retrospect that's a pretty poor way to handle it.
source - The data to convertoptions - Specified optionsIOException - if there is an errorNullPointerException - if source array is nullGZIP,
DO_BREAK_LINES@Nonnull public static String encodeBytes(@Nonnull byte[] source, int off, int len)
As of v 2.3, if there is an error, the method will throw an IOException. This is new to v2.3! In earlier versions, it just returned a null value, but in retrospect that's a pretty poor way to handle it.
source - The data to convertoff - Offset in array where conversion should beginlen - Length of data to convertNullPointerException - if source array is nullIllegalArgumentException - if source array, offset, or length are invalid@Nonnull public static String encodeBytes(@Nonnull byte[] source, @Nonnegative int off, @Nonnegative int len, int nOptions) throws IOException
Example options:
GZIP: gzip-compresses object before encoding it.
DO_BREAK_LINES: break lines at 76 characters
Note: Technically, this makes your encoding non-compliant.
Example: encodeBytes( myData, Base64.GZIP ) or
Example:
encodeBytes( myData, Base64.GZIP | Base64.DO_BREAK_LINES )
As of v 2.3, if there is an error with the GZIP stream, the method will throw an IOException. This is new to v2.3! In earlier versions, it just returned a null value, but in retrospect that's a pretty poor way to handle it.
source - The data to convertoff - Offset in array where conversion should beginlen - Length of data to convertnOptions - Specified optionsIOException - if there is an errorNullPointerException - if source array is nullIllegalArgumentException - if source array, offset, or length are invalidGZIP,
DO_BREAK_LINES@Nonnull @ReturnsMutableCopy public static byte[] encodeBytesToBytes(@Nonnull byte[] source)
encodeBytes(byte[]) but returns a byte array instead of
instantiating a String. This is more efficient if you're working with I/O
streams and have large data sets to encode.source - The data to convertNullPointerException - if source array is null@Nonnull @ReturnsMutableCopy public static byte[] encodeBytesToBytes(@Nonnull byte[] aSource, @Nonnegative int nOfs, @Nonnegative int nLen, int nOptions) throws IOException
encodeBytes(byte[], int, int, int) but returns a byte
array instead of instantiating a String. This is more efficient if you're
working with I/O streams and have large data sets to encode.aSource - The data to convertnOfs - Offset in array where conversion should beginnLen - Length of data to convertnOptions - Specified optionsIOException - if there is an errorNullPointerException - if source array is nullIllegalArgumentException - if source array, offset, or length are invalidGZIP,
DO_BREAK_LINES@Nonnull @ReturnsMutableCopy public static byte[] decode(@Nonnull byte[] source) throws IOException
source - The Base64 encoded dataIOException - In case of error@Nonnull @ReturnsMutableCopy public static byte[] decode(@Nonnull byte[] source, int options) throws IOException
source - The Base64 encoded dataoptions - Can specify options such as alphabet type to useIOException - In case of error@Nonnull @ReturnsMutableCopy public static byte[] decode(@Nonnull byte[] aSource, int nOfs, int nLen, int nOptions) throws IOException
aSource - The Base64 encoded datanOfs - The offset of where to begin decodingnLen - The length of characters to decodenOptions - Can specify options such as alphabet type to useIOException - If bogus characters exist in source data@Nonnull @ReturnsMutableCopy public static byte[] decode(@Nonnull String s) throws IOException
s - the string to decodeIOException - If there is a problem@Nonnull @ReturnsMutableCopy public static byte[] decode(@Nonnull String s, int options) throws IOException
s - the string to decodeoptions - encode options such as URL_SAFEIOException - if there is an errorNullPointerException - if s is nullpublic static Object decodeToObject(@Nonnull String encodedObject) throws IOException, ClassNotFoundException
encodedObject - The Base64 data to decodeNullPointerException - if encodedObject is nullIOException - if there is a general errorClassNotFoundException - if the decoded object is of a class that cannot be found by the JVMpublic static Object decodeToObject(@Nonnull String encodedObject, int options, @Nullable ClassLoader loader) throws IOException, ClassNotFoundException
encodedObject - The Base64 data to decodeoptions - Various parameters related to decodingloader - Optional class loader to use in deserializing classes.NullPointerException - if encodedObject is nullIOException - if there is a general errorClassNotFoundException - if the decoded object is of a class that cannot be found by the JVMpublic static void encodeToFile(@Nonnull byte[] aDataToEncode, String sFilename) throws IOException
As of v 2.3, if there is a error, the method will throw an IOException. This is new to v2.3! In earlier versions, it just returned false, but in retrospect that's a pretty poor way to handle it.
aDataToEncode - byte array of data to encode in base64 formsFilename - Filename for saving encoded dataIOException - if there is an errorNullPointerException - if dataToEncode is nullpublic static void decodeToFile(@Nonnull String dataToDecode, @Nonnull String filename) throws IOException
As of v 2.3, if there is a error, the method will throw an IOException. This is new to v2.3! In earlier versions, it just returned false, but in retrospect that's a pretty poor way to handle it.
dataToDecode - Base64-encoded data as a stringfilename - Filename for saving decoded dataIOException - if there is an error@Nonnull @ReturnsMutableCopy public static byte[] decodeFromFile(@Nonnull String filename) throws IOException
As of v 2.3, if there is a error, the method will throw an IOException. This is new to v2.3! In earlier versions, it just returned false, but in retrospect that's a pretty poor way to handle it.
filename - Filename for reading encoded dataIOException - if there is an error@Nonnull public static String encodeFromFile(@Nonnull String filename) throws IOException
As of v 2.3, if there is a error, the method will throw an IOException. This is new to v2.3! In earlier versions, it just returned false, but in retrospect that's a pretty poor way to handle it.
filename - Filename for reading binary dataIOException - if there is an errorpublic static void encodeFileToFile(@Nonnull String infile, @Nonnull String outfile) throws IOException
infile - Input fileoutfile - Output fileIOException - if there is an errorpublic static void decodeFileToFile(@Nonnull String infile, @Nonnull String outfile) throws IOException
infile - Input fileoutfile - Output fileIOException - if there is an error@Nullable @ReturnsMutableCopy public static byte[] safeDecode(@Nullable String sEncoded)
sEncoded - The encoded string.null if decoding failed.@Nullable @ReturnsMutableCopy public static byte[] safeDecode(@Nullable String sEncoded, int nOptions)
sEncoded - The encoded string.nOptions - Decoding options.null if decoding failed.@Nullable @ReturnsMutableCopy public static byte[] safeDecode(@Nullable byte[] aEncodedBytes)
aEncodedBytes - The encoded byte array.null if decoding failed.@Nullable @ReturnsMutableCopy public static byte[] safeDecode(@Nullable byte[] aEncodedBytes, int nOptions)
aEncodedBytes - The encoded byte array.nOptions - Decoding options.null if decoding failed.@Nullable @ReturnsMutableCopy public static byte[] safeDecode(@Nullable byte[] aEncodedBytes, @Nonnegative int nOfs, @Nonnegative int nLen)
aEncodedBytes - The encoded byte array.nOfs - The offset of where to begin decodingnLen - The number of characters to decodenull if decoding failed.@Nullable @ReturnsMutableCopy public static byte[] safeDecode(@Nullable byte[] aEncodedBytes, @Nonnegative int nOfs, @Nonnegative int nLen, int nOptions)
aEncodedBytes - The encoded byte array.nOfs - The offset of where to begin decodingnLen - The number of characters to decodenOptions - Decoding options.null if decoding failed.@Nullable public static String safeDecodeAsString(@Nullable String sEncoded, @Nonnull Charset aCharset)
sEncoded - The encoded string.aCharset - The character set to be used.null if decoding failed.@Nullable public static String safeDecodeAsString(@Nullable byte[] aEncodedBytes, @Nonnull Charset aCharset)
aEncodedBytes - The encoded byte array.aCharset - The character set to be used.null if decoding failed.@Nullable public static String safeDecodeAsString(@Nullable byte[] aEncodedBytes, @Nonnegative int nOfs, @Nonnegative int nLength, @Nonnull Charset aCharset)
aEncodedBytes - The encoded byte array.nOfs - Offset into arraynLength - Number of bytes to decode.aCharset - The character set to be used.null if decoding failed.@Nullable @ReturnsMutableCopy public static byte[] safeEncodeBytesToBytes(@Nullable byte[] aDecoded)
@Nullable @ReturnsMutableCopy public static byte[] safeEncodeBytesToBytes(@Nullable byte[] aDecoded, int nOptions)
@Nullable @ReturnsMutableCopy public static byte[] safeEncodeBytesToBytes(@Nullable byte[] aDecoded, @Nonnegative int nOfs, @Nonnegative int nLen)
@Nullable @ReturnsMutableCopy public static byte[] safeEncodeBytesToBytes(@Nullable byte[] aDecoded, @Nonnegative int nOfs, @Nonnegative int nLen, int nOptions)
@Nullable @ReturnsMutableCopy public static String safeEncodeBytes(@Nullable byte[] aDecoded)
@Nullable @ReturnsMutableCopy public static String safeEncodeBytes(@Nullable byte[] aDecoded, int nOptions)
@Nullable @ReturnsMutableCopy public static String safeEncodeBytes(@Nullable byte[] aDecoded, @Nonnegative int nOfs, @Nonnegative int nLen)
@Nullable @ReturnsMutableCopy public static String safeEncodeBytes(@Nullable byte[] aDecoded, @Nonnegative int nOfs, @Nonnegative int nLen, int nOptions)
Copyright © 2014–2017 Philip Helger. All rights reserved.