jonelo.sugar.util

Class Base64


public class Base64
extends java.lang.Object

Encodes and decodes to and from Base64 notation.

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.

Nested Class Summary

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.

Field Summary

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.
static int
GZIP
Specify that data should be gzip-compressed.
static int
NO_OPTIONS
No options specified.

Method Summary

static byte[]
decode(String s)
Decodes data from Base64 notation, automatically detecting gzip-compressed data and decompressing it.
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[]
decodeFromFile(String filename)
Convenience method for reading a base64-encoded file and decoding it.
static boolean
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 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 options)
Encodes a byte array into Base64 notation.
static String
encodeFromFile(String filename)
Convenience method for reading a binary file and base64-encoding it.
static String
encodeObject(java.io.Serializable serializableObject)
Serializes an object and returns the Base64-encoded version of that serialized object.
static 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, String filename)
Convenience method for encoding data to a file.

Field Details

DECODE

public static final int DECODE
Specify decoding.
Field Value:
0

DONT_BREAK_LINES

public static final int DONT_BREAK_LINES
Don't break lines when encoding (violates strict Base64 specification)
Field Value:
8

ENCODE

public static final int ENCODE
Specify encoding.
Field Value:
1

GZIP

public static final int GZIP
Specify that data should be gzip-compressed.
Field Value:
2

NO_OPTIONS

public static final int NO_OPTIONS
No options specified. Value is zero.
Field Value:
0

Method Details

decode

public static byte[] decode(String s)
Decodes data from Base64 notation, automatically detecting gzip-compressed data and decompressing it.
Parameters:
s - the string to decode
Returns:
the decoded data
Since:
1.4

decode

public static byte[] decode(byte[] source,
                            int off,
                            int len)
Very low-level access to decoding ASCII characters in the form of a byte array. Does not support automatically gunzipping or any other "fancy" features.
Parameters:
source - The Base64 encoded data
off - The offset of where to begin decoding
len - The length of characters to decode
Returns:
decoded data
Since:
1.3

decodeFromFile

public static byte[] decodeFromFile(String filename)
Convenience method for reading a base64-encoded file and decoding it.
Parameters:
filename - Filename for reading encoded data
Returns:
decoded byte array or null if unsuccessful
Since:
2.1

decodeToFile

public static boolean decodeToFile(String dataToDecode,
                                   String filename)
Convenience method for decoding data to a file.
Parameters:
dataToDecode - Base64-encoded data as a string
filename - Filename for saving decoded data
Returns:
true if successful, false otherwise
Since:
2.1

decodeToObject

public static Object decodeToObject(String encodedObject)
Attempts to decode Base64 data and deserialize a Java Object within. Returns null if there was an error.
Parameters:
encodedObject - The Base64 data to decode
Returns:
The decoded and deserialized object
Since:
1.5

encodeBytes

public static String encodeBytes(byte[] source)
Encodes a byte array into Base64 notation. Does not GZip-compress data.
Parameters:
source - The data to convert
Since:
1.4

encodeBytes

public static String encodeBytes(byte[] source,
                                 int options)
Encodes a byte array into Base64 notation.

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 )

Parameters:
source - The data to convert
options - Specified options
Since:
2.0
See Also:
Base64.GZIP, Base64.DONT_BREAK_LINES

encodeBytes

public static String encodeBytes(byte[] source,
                                 int off,
                                 int len)
Encodes a byte array into Base64 notation. Does not GZip-compress data.
Parameters:
source - The data to convert
off - Offset in array where conversion should begin
len - Length of data to convert
Since:
1.4

encodeBytes

public static String encodeBytes(byte[] source,
                                 int off,
                                 int len,
                                 int options)
Encodes a byte array into Base64 notation.

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 )

Parameters:
source - The data to convert
off - Offset in array where conversion should begin
len - Length of data to convert
options - Specified options
Since:
2.0
See Also:
Base64.GZIP, Base64.DONT_BREAK_LINES

encodeFromFile

public static String encodeFromFile(String filename)
Convenience method for reading a binary file and base64-encoding it.
Parameters:
filename - Filename for reading binary data
Returns:
base64-encoded string or null if unsuccessful
Since:
2.1

encodeObject

public static String encodeObject(java.io.Serializable serializableObject)
Serializes an object and returns the Base64-encoded version of that serialized object. If the object cannot be serialized or there is another error, the method will return null. The object is not GZip-compressed before being encoded.
Parameters:
serializableObject - The object to encode
Returns:
The Base64-encoded object
Since:
1.4

encodeObject

public static String encodeObject(java.io.Serializable serializableObject,
                                  int options)
Serializes an object and returns the Base64-encoded version of that serialized object. If the object cannot be serialized or there is another error, the method will return null.

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 )

Parameters:
serializableObject - The object to encode
options - Specified options
Returns:
The Base64-encoded object
Since:
2.0
See Also:
Base64.GZIP, Base64.DONT_BREAK_LINES

encodeToFile

public static boolean encodeToFile(byte[] dataToEncode,
                                   String filename)
Convenience method for encoding data to a file.
Parameters:
dataToEncode - byte array of data to encode in base64 form
filename - Filename for saving encoded data
Returns:
true if successful, false otherwise
Since:
2.1