Java8 Base64

Java 8 新特性Java 8 の新機能


Java 8 では、Base64 エンコーディングは Java クラスライブラリの標準になっています。

Java 8 には Base64 エンコーディングのエンコーダーとデコーダーが組み込まれています。

Base64 ユーティリティクラスは、次の 3 種類の BASE64 エンコーダー/デコーダーを取得するための一連の静的メソッドを提供します。

  • 基本:出力は文字セット A-Za-z0-9+/ にマッピングされ、エンコードでは行マーカーは追加されません。出力のデコードは A-Za-z0-9+/ のみサポートします。
  • URL:出力は文字セット A-Za-z0-9+_ にマッピングされ、URL とファイル名に対して安全です。
  • MIME:出力は MIME フレンドリーな形式にマッピングされます。出力の各行は 76 文字を超えず、'\r' の後に '\n' が続く区切りを使用します。エンコードされた出力の最後には行区切りはありません。

ネストされたクラス

番号 ネストされたクラス & 説明
1 static class Base64.Decoder

このクラスは、Base64 エンコーディングを使用してバイトデータをデコードするためのデコーダーを実装します。

2 static class Base64.Encoder

このクラスは、Base64 エンコーディングを使用してバイトデータをエンコードするためのエンコーダーを実装します。

メソッド

番号 メソッド名 & 説明
1 static Base64.Decoder getDecoder()

基本的な base64 エンコーディング方式を使用してデコードする Base64.Decoder を返します。

2 static Base64.Encoder getEncoder()

基本的な base64 エンコーディング方式を使用してエンコードする Base64.Encoder を返します。

3 static Base64.Decoder getMimeDecoder()

MIME 型 base64 エンコーディング方式を使用してデコードする Base64.Decoder を返します。

4

static Base64.Encoder getMimeEncoder()

MIME 型 base64 エンコーディング方式を使用してエンコードする Base64.Encoder を返します。

5 static Base64.Encoder getMimeEncoder(int lineLength, byte[] lineSeparator)

MIME 型 base64 エンコーディング方式を使用してエンコードする Base64.Encoder を返します。パラメータで各行の長さと行区切り文字を指定できます。

6 static Base64.Decoder getUrlDecoder()

URL およびファイル名セーフ型 base64 エンコーディング方式を使用してデコードする Base64.Decoder を返します。

7 static Base64.Encoder getUrlEncoder()

URL およびファイル名セーフ型 base64 エンコーディング方式を使用してエンコードする Base64.Encoder を返します。

注意:Base64 クラスの多くのメソッドは、java.lang.Objectクラスから継承されています。


Base64 の例

以下の例は、Base64 の使用法を示しています。

Java8Tester.java ファイル

import java.util.Base64; import java.util.UUID; import java.io.UnsupportedEncodingException; public class Java8Tester { public static void main(String args[]){ try { //基本エンコーディングの使用 String base64encodedString = Base64.getEncoder().encodeToString("サンプル?java8".getBytes("utf-8")); System.out.println("Base64 エンコード文字列 (基本) :" + base64encodedString); //デコード byte[] base64decodedBytes = Base64.getDecoder().decode(base64encodedString); System.out.println("元の文字列:" + new String(base64decodedBytes, "utf-8")); base64encodedString = Base64.getUrlEncoder().encodeToString("サンプル?java8".getBytes("utf-8")); System.out.println("Base64 エンコード文字列 (URL) :" + base64encodedString); StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < 10; ++i) { stringBuilder.append(UUID.randomUUID().toString()); } byte[] mimeBytes = stringBuilder.toString().getBytes("utf-8"); String mimeEncodedString = Base64.getMimeEncoder().encodeToString(mimeBytes); System.out.println("Base64 エンコード文字列 (MIME) :" + mimeEncodedString); }catch(UnsupportedEncodingException e){ System.out.println("Error :" + e.getMessage()); } } }

上記のスクリプトを実行すると、出力結果は次のようになります。

$ javac Java8Tester.java 
$ java Java8Tester
原始字符串: サンプル?java8
Base64 编码字符串 (URL) :VHV0b3JpYWxzUG9pbnQ_amF2YTg=
Base64 编码字符串 (MIME) :M2Q4YmUxMTEtYWRkZi00NzBlLTgyZDgtN2MwNjgzOGY2NGFlOTQ3NDYyMWEtZDM4ZS00YWVhLTkz
OTYtY2ZjMzZiMzFhNmZmOGJmOGI2OTYtMzkxZi00OTJiLWEyMTQtMjgwN2RjOGI0MTBmZWUwMGNk
NTktY2ZiZS00MTMxLTgzODctNDRjMjFkYmZmNGM4Njg1NDc3OGItNzNlMC00ZWM4LTgxNzAtNjY3
NTgyMGY3YzVhZWQyMmNiZGItOTIwZi00NGUzLTlkMjAtOTkzZTI1MjUwMDU5ZjdkYjg2M2UtZTJm
YS00Y2Y2LWIwNDYtNWQ2MGRiOWQyZjFiMzJhMzYxOWQtNDE0ZS00MmRiLTk3NDgtNmM4NTczYjMx
ZDIzNGRhOWU4NDAtNTBiMi00ZmE2LWE0M2ItZjU3MWFiNTI2NmQ2NTlmMTFmZjctYjg1NC00NmE1
LWEzMWItYjk3MmEwZTYyNTdk

Java 8 新特性Java 8 の新機能

その他の拡張