public class Base64
extends java.lang.Object
Change Log:
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 | Class and Description |
---|---|
static class |
Base64.InputStream
A
Base64.InputStream will read data from another
java.io.InputStream, given in the constructor,
and encode/decode to/from Base64 notation on the fly. |
static class |
Base64.OutputStream
A
Base64.OutputStream will write data to another
java.io.OutputStream, given in the constructor,
and encode/decode to/from Base64 notation on the fly. |
Modifier and Type | Field and Description |
---|---|
private static byte[] |
_NATIVE_ALPHABET |
private static byte[] |
ALPHABET
The 64 valid Base64 values.
|
private static byte[] |
DECODABET
Translates a Base64 value to either its 6-bit reconstruction value
or a negative number indicating some other meaning.
|
static int |
DECODE
Specify decoding.
|
static int |
DONT_BREAK_LINES
Don't break lines when encoding (violates strict Base64 specification)
|
static int |
ENCODE
Specify encoding.
|
private static byte |
EQUALS_SIGN
The equals sign (=) as a byte.
|
private static byte |
EQUALS_SIGN_ENC |
static int |
GZIP
Specify that data should be gzip-compressed.
|
private static Log |
log |
private static int |
MAX_LINE_LENGTH
Maximum line length (76) of Base64 output.
|
private static byte |
NEW_LINE
The new line character (\n) as a byte.
|
static int |
NO_OPTIONS
No options specified.
|
private static java.lang.String |
PREFERRED_ENCODING
Preferred encoding.
|
private static byte |
WHITE_SPACE_ENC |
Modifier | Constructor and Description |
---|---|
private |
Base64()
Defeats instantiation.
|
Modifier and Type | Method and Description |
---|---|
static byte[] |
decode(byte[] source,
int off,
int len)
Very low-level access to decoding ASCII characters in
the form of a byte array.
|
static byte[] |
decode(java.lang.String s)
Decodes data from Base64 notation, automatically
detecting gzip-compressed data and decompressing it.
|
private static int |
decode4to3(byte[] source,
int srcOffset,
byte[] destination,
int destOffset)
Decodes four bytes from array source
and writes the resulting bytes (up to three of them)
to destination.
|
static byte[] |
decodeFromFile(java.lang.String filename)
Convenience method for reading a base64-encoded
file and decoding it.
|
static boolean |
decodeToFile(java.lang.String dataToDecode,
java.lang.String filename)
Convenience method for decoding data to a file.
|
static java.lang.Object |
decodeToObject(java.lang.String encodedObject)
Attempts to decode Base64 data and deserialize a Java
Object within.
|
private static byte[] |
encode3to4(byte[] b4,
byte[] threeBytes,
int numSigBytes)
Encodes up to the first three bytes of array threeBytes
and returns a four-byte array in Base64 notation.
|
private static byte[] |
encode3to4(byte[] source,
int srcOffset,
int numSigBytes,
byte[] destination,
int destOffset)
Encodes up to three bytes of the array source
and writes the resulting four Base64 bytes to destination.
|
static java.lang.String |
encodeBytes(byte[] source)
Encodes a byte array into Base64 notation.
|
static java.lang.String |
encodeBytes(byte[] source,
int options)
Encodes a byte array into Base64 notation.
|
static java.lang.String |
encodeBytes(byte[] source,
int off,
int len)
Encodes a byte array into Base64 notation.
|
static java.lang.String |
encodeBytes(byte[] source,
int off,
int len,
int options)
Encodes a byte array into Base64 notation.
|
static java.lang.String |
encodeFromFile(java.lang.String filename)
Convenience method for reading a binary file
and base64-encoding it.
|
static java.lang.String |
encodeObject(java.io.Serializable serializableObject)
Serializes an object and returns the Base64-encoded
version of that serialized object.
|
static java.lang.String |
encodeObject(java.io.Serializable serializableObject,
int options)
Serializes an object and returns the Base64-encoded
version of that serialized object.
|
static boolean |
encodeToFile(byte[] dataToEncode,
java.lang.String filename)
Convenience method for encoding data to a file.
|
private static final Log log
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_BREAK_LINES
private static final int MAX_LINE_LENGTH
private static final byte EQUALS_SIGN
private static final byte NEW_LINE
private static final java.lang.String PREFERRED_ENCODING
private static final byte[] ALPHABET
private static final byte[] _NATIVE_ALPHABET
private static final byte[] DECODABET
private static final byte WHITE_SPACE_ENC
private static final byte EQUALS_SIGN_ENC
private static byte[] encode3to4(byte[] b4, byte[] threeBytes, int numSigBytes)
b4
- A reusable byte array to reduce array instantiationthreeBytes
- the array to convertnumSigBytes
- the number of significant bytes in your arrayprivate static byte[] encode3to4(byte[] source, int srcOffset, int numSigBytes, byte[] destination, int destOffset)
source
- the array to convertsrcOffset
- the index where conversion beginsnumSigBytes
- the number of significant bytes in your arraydestination
- the array to hold the conversiondestOffset
- the index where output will be putpublic static java.lang.String encodeObject(java.io.Serializable serializableObject)
serializableObject
- The object to encodepublic static java.lang.String encodeObject(java.io.Serializable serializableObject, int options)
Valid options:
GZIP: gzip-compresses object before encoding it. DONT_BREAK_LINES: don't break lines at 76 characters Note: Technically, this makes your encoding non-compliant.
Example: encodeObject( myObj, Base64.GZIP )
or
Example: encodeObject( myObj, Base64.GZIP | Base64.DONT_BREAK_LINES )
serializableObject
- The object to encodeoptions
- Specified optionsGZIP
,
DONT_BREAK_LINES
public static java.lang.String encodeBytes(byte[] source)
source
- The data to convertpublic static java.lang.String encodeBytes(byte[] source, int options)
Valid options:
GZIP: gzip-compresses object before encoding it. DONT_BREAK_LINES: don't 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.DONT_BREAK_LINES )
source
- The data to convertoptions
- Specified optionsGZIP
,
DONT_BREAK_LINES
public static java.lang.String encodeBytes(byte[] source, int off, int len)
source
- The data to convertoff
- Offset in array where conversion should beginlen
- Length of data to convertpublic static java.lang.String encodeBytes(byte[] source, int off, int len, int options)
Valid options:
GZIP: gzip-compresses object before encoding it. DONT_BREAK_LINES: don't 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.DONT_BREAK_LINES )
source
- The data to convertoff
- Offset in array where conversion should beginlen
- Length of data to convertoptions
- Specified optionsGZIP
,
DONT_BREAK_LINES
private static int decode4to3(byte[] source, int srcOffset, byte[] destination, int destOffset)
source
- the array to convertsrcOffset
- the index where conversion beginsdestination
- the array to hold the conversiondestOffset
- the index where output will be putpublic static byte[] decode(byte[] source, int off, int len)
source
- The Base64 encoded dataoff
- The offset of where to begin decodinglen
- The length of characters to decodepublic static byte[] decode(java.lang.String s)
s
- the string to decodepublic static java.lang.Object decodeToObject(java.lang.String encodedObject)
encodedObject
- The Base64 data to decodepublic static boolean encodeToFile(byte[] dataToEncode, java.lang.String filename)
dataToEncode
- byte array of data to encode in base64 formfilename
- Filename for saving encoded datapublic static boolean decodeToFile(java.lang.String dataToDecode, java.lang.String filename)
dataToDecode
- Base64-encoded data as a stringfilename
- Filename for saving decoded datapublic static byte[] decodeFromFile(java.lang.String filename)
filename
- Filename for reading encoded datapublic static java.lang.String encodeFromFile(java.lang.String filename)
filename
- Filename for reading binary data