将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.
对于ByteArrayInputStreamavailable()产量,字节总数。
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
