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

我读了 this post,但我没有关注.我看到了 this,但没有看到使用ByteArrayOutputStream将ByteArrayInputStream转换为String的正确示例.

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

我正在考虑this example并扩展ByteArrayInputStream,并利用Decorator在运行时增加功能.任何兴趣在这一个更好的解决方案来使用ByteArrayOutputStream?

解决方法

一个ByteArrayOutputStream可以从任何InputStream读取,最后得到一个byte [].

但是使用ByteArrayInputStream更简单:

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

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

回答评论:使用ByteArrayOutputStream

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

这里可能是任何InputStream.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...