polyglot.util
Class Base64

java.lang.Object
  extended by polyglot.util.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.

Version:
2.1
Author:
Robert Harder, rob@iharder.net

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(byte[] source, int off, int len)
          Very low-level access to decoding ASCII characters in the form of a byte array.
static byte[] decode(char[] data)
          Decodes data from Base64 notation, automatically detecting gzip-compressed data and decompressing it.
static byte[] decode(java.lang.String s)
          Decodes data from Base64 notation, automatically detecting gzip-compressed data and decompressing it.
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.
static char[] encode(byte[] data)
          Encodes a byte array into Base64 notation.
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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NO_OPTIONS

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

See Also:
Constant Field Values

ENCODE

public static final int ENCODE
Specify encoding.

See Also:
Constant Field Values

DECODE

public static final int DECODE
Specify decoding.

See Also:
Constant Field Values

GZIP

public static final int GZIP
Specify that data should be gzip-compressed.

See Also:
Constant Field Values

DONT_BREAK_LINES

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

See Also:
Constant Field Values
Method Detail

encodeObject

public static java.lang.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 java.lang.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:
GZIP, DONT_BREAK_LINES

encodeBytes

public static java.lang.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 java.lang.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:
GZIP, DONT_BREAK_LINES

encodeBytes

public static java.lang.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 java.lang.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:
GZIP, DONT_BREAK_LINES

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

decode

public static byte[] decode(java.lang.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

decodeToObject

public static java.lang.Object decodeToObject(java.lang.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

encodeToFile

public static boolean encodeToFile(byte[] dataToEncode,
                                   java.lang.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

decodeToFile

public static boolean decodeToFile(java.lang.String dataToDecode,
                                   java.lang.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

decodeFromFile

public static byte[] decodeFromFile(java.lang.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

encodeFromFile

public static java.lang.String encodeFromFile(java.lang.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

encode

public static char[] encode(byte[] data)
Encodes a byte array into Base64 notation. Does not GZip-compress data. Added for backward compatibility with old Base64 implementation. --nystrom

Parameters:
data - The data to convert

decode

public static byte[] decode(char[] data)
Decodes data from Base64 notation, automatically detecting gzip-compressed data and decompressing it. Added for backward compatibility with old Base64 implementation. --nystrom

Parameters:
data - the character array to decode
Returns:
the decoded data