Mus*_*shy 22 java string bytearrayoutputstream bytearrayinputstream
我读过这篇文章,但我没有关注.我已经看过这个,但还没有看到一个将a转换ByteArrayInputStream
为String
使用a 的正确例子ByteArrayOutputStream
.
要检索的内容ByteArrayInputStream
为String
,使用ByteArrayOutputstream
推荐的还是有一个更可取的方法?
我正在考虑这个例子并扩展ByteArrayInputStream
和利用一个Decorator来增加运行时的功能.任何对此的兴趣都是采用ByteArrayOutputStream
?的更好解决方案?
Joo*_*gen 34
A ByteArrayOutputStream
可以从任何一个读取,InputStream
最后产生一个byte[]
.
然而,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.
Run Code Online (Sandbox Code Playgroud)
对于ByteArrayInputStream
available()
yield,总字节数.
回答评论:使用ByteArrayOutputStream
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();
Run Code Online (Sandbox Code Playgroud)
这里可能是任何InputStream.
Che*_*rry 14
为什么没人提到org.apache.commons.io.IOUtils
?
import java.nio.charset.StandardCharsets;
import org.apache.commons.io.IOUtils;
String result = IOUtils.toString(in, StandardCharsets.UTF_8);
Run Code Online (Sandbox Code Playgroud)
只需一行代码.
Java 9+ 解决方案:
new String(inputStream.readAllBytes(), StandardCharsets.UTF_8);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
57756 次 |
最近记录: |