我读了
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.
原文地址:https://www.jb51.cc/java/123755.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。