将ByteArrayInputStream的内容转换为字符串
我读了这篇文章,但我没有关注。我已经看到了,但还没有看到将转换ByteArrayInputStream
为String
使用的正确示例ByteArrayOutputStream
。
要检索的内容ByteArrayInputStream
为String
,使用ByteArrayOutputstream
推荐的还是有一个更可取的方法?
我正在考虑这个示例,并扩展ByteArrayInputStream
并利用Decorator在运行时增加功能。是否有兴趣将其作为使用ByteArrayOutputStream
?的更好解决方案?
回答:
A ByteArrayOutputStream
可以读取任何内容InputStream
,最后得到a byte[]
。
但是,使用a 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()
产量,字节总数。
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);
以上是 将ByteArrayInputStream的内容转换为字符串 的全部内容, 来源链接: utcz.com/qa/428981.html