Java : Base64 - API使用例
Base64 (Java SE 23 & JDK 23) の使い方まとめです。
 ほとんどのメソッドにサンプルコードがあります。
 APIドキュメントのおともにどうぞ。
概要
このクラスは、Base64エンコーディング・スキームのエンコーダとデコーダを取得するためのstaticメソッドだけで構成されます。 このクラスの実装では、RFC 4648およびRFC 2045で規定された、次のタイプのBase64をサポートしています。
Base64クラスは、各種Encoder、Decoderを取得するメソッドを提供します。
final var encoder = Base64.getEncoder();
final byte[] src = {1, 2, 3, 4, 5, 6, 7};
final var dst = encoder.encodeToString(src);
System.out.println(dst); // AQIDBAUGBw==
final var decoder = Base64.getDecoder();
final var decoded = decoder.decode(dst);
System.out.println(Arrays.toString(decoded)); // [1, 2, 3, 4, 5, 6, 7]
メソッド
static Base64.Decoder getDecoder ()
基本型base64エンコーディング・スキームを使用してデコードするBase64.Decoderを返します。
final var encoder = Base64.getEncoder();
final byte[] src = {1, 2, 3, 4, 5, 6, 7};
final var dst = encoder.encodeToString(src);
System.out.println(dst); // AQIDBAUGBw==
final var decoder = Base64.getDecoder();
final var decoded = decoder.decode(dst);
System.out.println(Arrays.toString(decoded)); // [1, 2, 3, 4, 5, 6, 7]
static Base64.Encoder getEncoder ()
基本型base64エンコーディング・スキームを使用してエンコードするBase64.Encoderを返します。
final var encoder = Base64.getEncoder();
final byte[] src = {1, 2, 3, 4, 5, 6, 7};
final var dst = encoder.encodeToString(src);
System.out.println(dst); // AQIDBAUGBw==
final var decoder = Base64.getDecoder();
final var decoded = decoder.decode(dst);
System.out.println(Arrays.toString(decoded)); // [1, 2, 3, 4, 5, 6, 7]
static Base64.Decoder getMimeDecoder ()
MIME型base64デコーディング・スキームを使用してデコードするBase64.Decoderを返します。
final var src = new byte[130];
for (int i = 0; i < src.length; i++) {
    src[i] = (byte) (i % 100);
}
// [0, 1, 2, 3, 4, ... 96, 97, 98, 99, 0, 1, 2, ... 25, 26, 27, 28, 29]
System.out.println(Arrays.toString(src));
{
    final var encoder = Base64.getMimeEncoder();
    final var dst = encoder.encodeToString(src);
    // MIME用のエンコーダは76文字ごとに改行が入ります。
    // AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4
    // OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiYwABAgMEBQYHCAkKCwwN
    // Dg8QERITFBUWFxgZGhscHQ==
    System.out.println(dst);
    final var decoder = Base64.getMimeDecoder();
    final var decoded = decoder.decode(dst);
    System.out.println(Arrays.equals(src, decoded)); // true
}
{
    final var encoder = Base64.getEncoder();
    final var dst = encoder.encodeToString(src);
    // 通常のエンコーダは1行になります。
    // AAECAwQFBgc ... xgZGhscHQ==
    System.out.println(dst);
}
static Base64.Encoder getMimeEncoder ()
MIME型base64エンコーディング・スキームを使用してエンコードするBase64.Encoderを返します。
final var src = new byte[130];
for (int i = 0; i < src.length; i++) {
    src[i] = (byte) (i % 100);
}
// [0, 1, 2, 3, 4, ... 96, 97, 98, 99, 0, 1, 2, ... 25, 26, 27, 28, 29]
System.out.println(Arrays.toString(src));
{
    final var encoder = Base64.getMimeEncoder();
    final var dst = encoder.encodeToString(src);
    // MIME用のエンコーダは76文字ごとに改行が入ります。
    // AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4
    // OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiYwABAgMEBQYHCAkKCwwN
    // Dg8QERITFBUWFxgZGhscHQ==
    System.out.println(dst);
    final var decoder = Base64.getMimeDecoder();
    final var decoded = decoder.decode(dst);
    System.out.println(Arrays.equals(src, decoded)); // true
}
{
    final var encoder = Base64.getEncoder();
    final var dst = encoder.encodeToString(src);
    // 通常のエンコーダは1行になります。
    // AAECAwQFBgc ... xgZGhscHQ==
    System.out.println(dst);
}
static Base64.Encoder getMimeEncoder (int lineLength, byte[] lineSeparator)
指定した行の長さと行区切り文字でMIME型base64エンコーディング・スキームを使用してエンコードするBase64.Encoderを返します。
final byte[] src = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
final var encoder = Base64.getMimeEncoder(8, " ".getBytes());
final var dst = encoder.encodeToString(src);
// AQIDBAUG BwgJCgsM DQ==
System.out.println(dst);
static Base64.Decoder getUrlDecoder ()
URLセーフおよびファイル名セーフ型base64エンコーディング・スキームを使用してデコードするBase64.Decoderを返します。
final byte[] src = {105, -65, -65, 113};
{
    // 通常のエンコーダの例です。
    final var encoder = Base64.getEncoder();
    final var dst = encoder.encodeToString(src);
    // ab+/cQ==
    System.out.println(dst);
}
{
    // URLエンコーダでは、URLやファイル名に使えない '+' '/' といった文字を
    // '-' '_' に置き換えます。
    final var encoder = Base64.getUrlEncoder();
    final var dst = encoder.encodeToString(src);
    // ab-_cQ==
    System.out.println(dst);
    final var decoder = Base64.getUrlDecoder();
    final var decoded = decoder.decode(dst);
    // [105, -65, -65, 113]
    System.out.println(Arrays.toString(decoded));
}
static Base64.Encoder getUrlEncoder ()
URLセーフおよびファイル名セーフ型base64エンコーディング・スキームを使用してエンコードするBase64.Encoderを返します。
final byte[] src = {105, -65, -65, 113};
{
    // 通常のエンコーダの例です。
    final var encoder = Base64.getEncoder();
    final var dst = encoder.encodeToString(src);
    // ab+/cQ==
    System.out.println(dst);
}
{
    // URLエンコーダでは、URLやファイル名に使えない '+' '/' といった文字を
    // '-' '_' に置き換えます。
    final var encoder = Base64.getUrlEncoder();
    final var dst = encoder.encodeToString(src);
    // ab-_cQ==
    System.out.println(dst);
    final var decoder = Base64.getUrlDecoder();
    final var decoded = decoder.decode(dst);
    // [105, -65, -65, 113]
    System.out.println(Arrays.toString(decoded));
}
関連記事
- API 使用例




