http://iharder.net/base64のBase64クラスを使用した場合
標準に比べ、メソッドが多い。
byte配列からの変換も可能だが、シリアライズ可能なオブジェクトを直接Base64文字列に変換
することも可能。
List
また、GZIP圧縮のオプションなども用意されている。
encodeの入力の種類
byte配列、java.nio.ByteBuffer、ファイル(パス指定)、オブジェクト(Serializable)
encodeの出力の種類
byte配列、java.nio.ByteBuffer、ファイル(パス指定)、String
decodeの入力の種類
byte配列、java.nio.ByteBuffer、ファイル(パス指定)、String
decodeの出力の種類
byte配列、java.nio.ByteBuffer、ファイル(パス指定)、オブジェクト(Serializable)
/** * SDK7以下の場合にサードパーティのBase64クラスと、オプションとしてGZIP圧縮を使った変換テスト * @throws IOException * @throws ClassNotFoundException */ public void under7Base64CheckAndGzip() throws IOException, ClassNotFoundException { Log.i("under7Base64CheckAndGzip","start"); SampleClass sc = new SampleClass(); sc.setId("test"); Log.i("変換前0",sc.getId()); //変換オプション //Base64.GZIP GZIP圧縮を使う String value = sample.base64.Base64.encodeObject(sc, sample.base64.Base64.GZIP|sample.base64.Base64.URL_SAFE); Log.i("変換後1object",value); SampleClass ret = (SampleClass)sample.base64.Base64.decodeToObject (value, sample.base64.Base64.GZIP|sample.base64.Base64.URL_SAFE, null); Log.i("変換後2",ret.getId()); Log.i("under7Base64CheckAndGzip","end"); }
変換のオプションとして、指定したほうが望ましいと思われるのが、以下の2つ。
- Base64.URL_SAFE
標準APIと同様の機能のオプション。
GZIP圧縮を有効にする。小さなデータであれば、このオプションを使う必要はないが、大量データの送信など行う場合は使ったほうが望ましいと思われる。
このBase64クラスの場合、標準で改行は無効となっている。
逆に改行を有効にしたい場合は、Base64.DO_BREAK_LINESオプションが用意されているのでそれを指定する。