将 InputStream 读入 String
有时你可能希望将字节输入读入字符串。要做到这一点,你需要找到一些在 byte
和用作 char
的 native Java
UTF-16 Codepoints 之间进行转换的东西。这是通过 InputStreamReader
完成的。
为了加快这一过程,分配一个缓冲区是通常的,这样我们在从 Input 读取时就不会有太多的开销。
Version >= Java SE 7
public String inputStreamToString(InputStream inputStream) throws Exception {
StringWriter writer = new StringWriter();
char[] buffer = new char[1024];
try (Reader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"))) {
int n;
while ((n = reader.read(buffer)) != -1) {
// all this code does is redirect the output of `reader` to `writer` in
// 1024 byte chunks
writer.write(buffer, 0, n);
}
}
return writer.toString();
}
将此示例转换为 Java SE 6(和更低版本)兼容代码将被省略为读者的练习。