我读了
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.