広告

Java : Base64.Decoder - API使用例

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


概要

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

クラス構成

Base64.Decoderクラスは、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[] decode (byte[] src)

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

final var decoder = Base64.getDecoder();

final var src = "AQIDBAUGBw==".getBytes();
final var dst = decoder.decode(src);

System.out.println(Arrays.toString(dst)); // [1, 2, 3, 4, 5, 6, 7]

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

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

final var decoder = Base64.getDecoder();

final var src = "AQIDBAUGBw==".getBytes();
final byte[] dst = new byte[src.length]; // 少し余裕を持って確保

final var size = decoder.decode(src, dst);
System.out.println(size); // 7

System.out.println(Arrays.toString(dst)); // [1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0, 0]

byte[] decode (String src)

Base64エンコーディング・スキームを使用して、Base64でエンコードされたStringを新しく割り当てられたバイト配列にデコードします。

final var decoder = Base64.getDecoder();

final var src = "AQIDBAUGBw==";
final var dst = decoder.decode(src);

System.out.println(Arrays.toString(dst)); // [1, 2, 3, 4, 5, 6, 7]

ByteBuffer decode (ByteBuffer buffer)

Base64エンコーディング方式を使用して入力byteバッファからすべてのバイトをデコードし、結果を新しく割り当てられたByteBufferに書き込みます。

final var decoder = Base64.getDecoder();

final var src = "AQIDBAUGBw==".getBytes();
final var srcBuffer = ByteBuffer.wrap(src);

final var dstBuffer = decoder.decode(srcBuffer);
System.out.println(dstBuffer); // java.nio.HeapByteBuffer[pos=0 lim=7 cap=7]

final var dst = dstBuffer.array();
System.out.println(Arrays.toString(dst)); // [1, 2, 3, 4, 5, 6, 7]

InputStream wrap (InputStream is)

Base64でエンコードされたバイト・ストリームをデコードするための入力ストリームを返します。

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

Files.writeString(path, "AQIDBAUGBw==");

final var decoder = Base64.getDecoder();

try (final var inputStream = decoder.wrap(Files.newInputStream(path))) {

    final var dst = inputStream.readAllBytes();
    System.out.println(Arrays.toString(dst)); // [1, 2, 3, 4, 5, 6, 7]
}

関連記事

ページの先頭へ