将字节数组输入流的内容转换为字符串
2022-09-01 08:04:13
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.
对于 ,产生总字节数。ByteArrayInputStream
available()
附录 2021-11-16
从java 9开始,您可以使用较短的readAllBytes。
byte[] bytes = in.readAllBytes();
评论答案:使用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();
这里可以是任何输入流。
由于java 10还有一个.ByteArrayOutputStream#toString(Charset)
String s = baos.toString(StandardCharsets.UTF_8);
为什么没有人提到?org.apache.commons.io.IOUtils
import java.nio.charset.StandardCharsets;
import org.apache.commons.io.IOUtils;
String result = IOUtils.toString(in, StandardCharsets.UTF_8);
只需一行代码。