Java : Base64 - API使用例

Base64 (Java SE 17 & JDK 17)の使用例まとめです。
だいたいのメソッドを網羅済みです。
公式API仕様のおともにどうぞ。


概要

クラス構成

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を返します。

getDecoderの使用例にgetEncoderもまとめて記載しました。
API使用例はそちらをご参照ください。

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を返します。

getMimeDecoderの使用例にgetMimeEncoderもまとめて記載しました。
API使用例はそちらをご参照ください。

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);
}
{
    final var encoder = Base64.getUrlEncoder();
    final var dst = encoder.encodeToString(src);

    // URLエンコーダでは、URLやファイル名に使えない '+' '/' といった文字を
    // '-' '_' に置き換えます。

    // 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を返します。

getUrlDecoderの使用例にgetUrlEncoderもまとめて記載しました。
API使用例はそちらをご参照ください。


関連記事

ページの先頭へ