gpt4 book ai didi

Java - 从InputStream读取字节数组直到某个字符

转载 作者:行者123 更新时间:2023-12-02 11:05:44 25 4
gpt4 key购买 nike

我需要从输入流中读取 Base64 编码的字节数组。

当我到达解码字符串中的\n 字符时,我必须停止阅读,我找不到有效的方法来执行此操作。

现在我以这样的方式结束了,但它没有按预期工作,因为它太容易捕获异常并搞乱一切......

byte buffer[] = new byte[2048];
byte results[] = new byte[2048];
String totalResult = null;
try {
int bytes_read = is.read(buffer);
while (buffer[bytes_read - 1] != '\n') {
bytes_read = is.read(buffer);
String app = new String(buffer, 0, bytes_read);
totalResult += app;

}
String response = Base64.getDecoder().decode(totalResult).toString();

有什么想法吗?输入流没有关闭,所以我需要从中获取数据并用 '\n' 分隔

最佳答案

与其重新发明轮子,不如考虑使用(例如)org.apache.commons.codec.binary.Base64InputStream来自Commons Codec项目和一个BufferedReader ( JavaDoc ) 来包装您的 InputStream像这样:

try(BufferedReader reader = new BufferedReader(new InputStreamReader(new Base64InputStream(is)))) {
String response = reader.readLine();
...
}

注释:

  • 尝试使用资源后,阅读器会自动关闭。
  • Base64InputStream 将即时解码 Base64 编码的字符
  • BufferedReader.readLine()考虑\n , \r\r\n作为行分隔符,用于确定行的结尾。
  • 我确信存在其他库可以促进即时解码,或者您可以自己编写一个简单的 InputStreamWrapper。

关于Java - 从InputStream读取字节数组直到某个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50972079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com