広告

Java : Base64.Encoder - API使用例

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


概要

このクラスは、RFC 4648およびRFC 2045に指定されているBase64エンコーディング・スキームを使用してバイト・データをエンコードするためのエンコーダを実装します。

クラス構成

Base64.Encoderクラスは、Base64方式でバイナリデータをテキストデータにエンコード(変換)します。

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]

メソッド

byte[] encode (byte[] src)

Base64エンコーディング・スキームを使用して、指定されたバイト配列からのすべてのバイトをエンコードし、新しく割り当てられたバイト配列に書き込みます。

final var encoder = Base64.getEncoder();

final byte[] src = {1, 2, 3, 4, 5, 6, 7};
final var dst = encoder.encode(src);

System.out.println(Arrays.toString(dst)); // [65, 81, 73, 68, 66, 65, 85, 71, 66, 119, 61, 61]
System.out.println(new String(dst)); // AQIDBAUGBw==

int encode (byte[] src, byte[] dst)

Base64エンコーディング・スキームを使用して、指定されたバイト配列からのすべてのバイトをエンコードし、結果となるバイトを指定された出力バイト配列のオフセット0から書き込みます。

final var encoder = Base64.getEncoder();

final byte[] src = {1, 2, 3, 4, 5, 6, 7};
final byte[] dst = new byte[src.length * 2 + 4]; // 少し余裕を持って確保

final var size = encoder.encode(src, dst);
System.out.println(size); // 12

System.out.println(Arrays.toString(dst)); // [65, 81, 73, 68, 66, 65, 85, 71, 66, 119, 61, 61, 0, 0, 0, 0, 0, 0]
System.out.println(new String(dst, 0, size)); // AQIDBAUGBw==

ByteBuffer encode (ByteBuffer buffer)

Base64エンコーディング方式を使用して、指定されたByteBufferからの残りのすべてのバイトを新しく割り当てられたByteBufferにエンコードします。

final var encoder = Base64.getEncoder();

final byte[] src = {1, 2, 3, 4, 5, 6, 7};
final var srcBuffer = ByteBuffer.wrap(src);

final var dstBuffer = encoder.encode(srcBuffer);
System.out.println(dstBuffer); // java.nio.HeapByteBuffer[pos=0 lim=12 cap=12]

final var dst = dstBuffer.array();
System.out.println(Arrays.toString(dst)); // [65, 81, 73, 68, 66, 65, 85, 71, 66, 119, 61, 61]
System.out.println(new String(dst)); // AQIDBAUGBw==

String encodeToString (byte[] src)

Base64エンコーディング・スキームを使用して、指定されたバイト配列をStringにエンコードします。

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==

Base64.Encoder withoutPadding ()

これと同じ方法だが、エンコードされたバイト・データの末尾にパディング文字を追加せずにエンコードするエンコーダ・インスタンスを返します。

final var encoder1 = Base64.getEncoder();
final var encoder2 = encoder1.withoutPadding();

final byte[] src = {1, 2, 3, 4, 5, 6, 7};

final var dst1 = encoder1.encodeToString(src);
final var dst2 = encoder2.encodeToString(src);

System.out.println(dst1); // AQIDBAUGBw==
System.out.println(dst2); // AQIDBAUGBw

OutputStream wrap (OutputStream os)

Base64エンコーディング・スキームを使用してバイト・データをエンコードするための出力ストリームをラップします。

final var path = Path.of("R:", "java-work", "sample.txt");
System.out.println(path); // R:\java-work\sample.txt

final var encoder = Base64.getEncoder();
final byte[] src = {1, 2, 3, 4, 5, 6, 7};

try (final var outputStream = encoder.wrap(Files.newOutputStream(path))) {
    outputStream.write(src);
}

final var dst = Files.readString(path);
System.out.println(dst); // AQIDBAUGBw==

関連記事

ページの先頭へ