Java : Base64.Encoder 示例

Java 中的 Base64.Encoder (Java SE 23 & JDK 23) 及其示例。
您将找到大多数 Base64.Encoder 方法的代码示例。

注解 :

  • 本文可能使用了翻译软件以方便阅读。 另请查看英文原文

简介

此类实现了一个编码器,用于使用 RFC 4648 和 RFC 2045 中指定的 Base64 编码方案对字节数据进行编码。 (机器翻译)

Class diagram

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]

Methods

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]; // With a little margin.

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 中。 (机器翻译)

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 编码方案将指定的字节数组编码为字符串。 (机器翻译)

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

相关文章

To top of page