将ByteArrayInputStream的内容转换为字符串

我读了这篇文章,但我没有关注。我已经看到了,但还没有看到将转换ByteArrayInputStreamString使用的正确示例ByteArrayOutputStream

要检索的内容ByteArrayInputStreamString,使用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

回到顶部