將 InputStream 讀入 String

有時你可能希望將位元組輸入讀入字串。要做到這一點,你需要找到一些在 byte 和用作 charnative JavaUTF-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(和更低版本)相容程式碼將被省略為讀者的練習。