You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现InputStream先转base64再转byte数组 替代直接转换方案

Java实现方案

JDK 8+ 无第三方依赖版本

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.Base64;

// 业务逻辑片段
InputStream input = ...;

// 步骤1:读取InputStream内容编码为Base64字符串
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int readLen;
while ((readLen = input.read(buffer)) != -1) {
    baos.write(buffer, 0, readLen);
}
String base64Content = Base64.getEncoder().encodeToString(baos.toByteArray());

// 步骤2:将Base64字符串解码为目标byte数组
byte[] targetByteArray = Base64.getDecoder().decode(base64Content);

如果你使用JDK9及以上版本,可以直接调用input.readAllBytes()替换ByteArrayOutputStream中转逻辑,代码更简洁。

已引入Apache Commons工具包的版本

如果你项目已经依赖Commons IO和Commons Codec,可以用更精简的写法:

import org.apache.commons.io.IOUtils;
import org.apache.commons.codec.binary.Base64;
import java.io.InputStream;

// 业务逻辑片段
InputStream input = ...;
String base64Content = Base64.encodeBase64String(IOUtils.toByteArray(input));
byte[] targetByteArray = Base64.decodeBase64(base64Content);

注意事项

  • 大文件流场景不建议一次性全量读取到内存,避免触发OOM,可改为分段处理Base64编解码
  • 如果需要生成URL安全的Base64格式,编码时替换为Base64.getUrlEncoder(),解码对应使用Base64.getUrlDecoder()

内容的提问来源于stack exchange,提问作者Ranjeet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:36:03