public static byte[] decodeFromFile( String filename )
	{
		byte[] decodedData = null;
		Base64.InputStream bis = null;
		try
		{
			// Set up some useful variables
			java.io.File file = new java.io.File( filename );
			byte[] buffer = null;
			int length = 0;
			int numBytes = 0;

			// Check for size of file
			if( file.length() > Integer.MAX_VALUE )
			{
				System.err.println( "File is too big for this convenience method (" + file.length() + " bytes)." );
				return null;
			}   // end if: file too big for int index
			buffer = new byte[(int) file.length()];

			// Open a stream
			bis = new Base64.InputStream( new java.io.BufferedInputStream( new java.io.FileInputStream( file ) ), Base64.DECODE );

			// Read until done
			while( (numBytes = bis.read( buffer, length, 4096 )) >= 0 )
			{
				length += numBytes;
			}

			// Save in a variable to return
			decodedData = new byte[length];
			System.arraycopy( buffer, 0, decodedData, 0, length );

		}   // end try
		catch( java.io.IOException e )
		{
			System.err.println( "Error decoding from file " + filename );
		}   // end catch: IOException
		finally
		{
			try
			{
				bis.close();
			}
			catch( Exception e )
			{
			}
		}   // end finally

		return decodedData;
	}   // end decodeFromFile