AByteArrayOutputStream
可以从任何读取,InputStream
最后产生 a 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.
对于 aByteArrayInputStream
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();
这里可能是任何 InputStream。
由于 java 10 还有一个ByteArrayOutputStream#toString(Charset)
.
String s = baos.toString(StandardCharsets.UTF_8);