gpt4 book ai didi

java - 将 ByteArrayInputStream 的内容转换为字符串

转载 作者:IT老高 更新时间:2023-10-28 20:57:16 28 4
gpt4 key购买 nike

我读过 this post但我不关注。我看过this但还没有看到使用 ByteArrayOutputStreamByteArrayInputStream 转换为 String 的正确示例。

要将 ByteArrayInputStream 的内容作为 String 检索,是推荐使用 ByteArrayOutputstream 还是有更好的方法?

我在考虑 this example并扩展 ByteArrayInputStream 并使用 Decorator在运行时增加功能。有兴趣将其作为使用 ByteArrayOutputStream 的更好解决方案吗?

最佳答案

一个 ByteArrayOutputStream 可以从任何 InputStream 中读取,最后产生一个 byte[]

但是使用 ByteArrayInputStream 会更简单:

int n = in.available();
byte[] bytes = new byte[n];
in.read(bytes, 0, n);
String s = new String(bytes, StandardCharsets.UTF_8); // Or any encoding.

对于 ByteArrayInputStream available() 产生总字节数。


附录 2021-11-16

从 java 9 开始,您可以使用更短的 readAllBytes .

byte[] bytes = in.readAllBytes();

回复评论:使用 ByteArrayOutputStream

ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buf = new byte[8192];
for (;;) {
int nread = in.read(buf, 0, buf.length);
if (nread <= 0) {
break;
}
baos.write(buf, 0, nread);
}
in.close();
baos.close();
byte[] bytes = baos.toByteArray();

这里可能是任何 InputStream。


从 java 10 开始,还有一个 ByteArrayOutputStream#toString(Charset)

String s = baos.toString(StandardCharsets.UTF_8);

关于java - 将 ByteArrayInputStream 的内容转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24059266/

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