如何在Java中将InputStream转换为String?

假设我有一个包含文本数据的InputStream ,我想将其转换为String (例如,我可以将流的内容写入日志文件)。

获取InputStream并将其转换为String的最简单方法是什么?

 public String convertStreamToString(InputStream is) { // ??? } 

这是我的版本,

 public static String readString(InputStream inputStream) throws IOException { ByteArrayOutputStream into = new ByteArrayOutputStream(); byte[] buf = new byte[4096]; for (int n; 0 < (n = inputStream.read(buf));) { into.write(buf, 0, n); } into.close(); return new String(into.toByteArray(), "UTF-8"); // Or whatever encoding } 

如果您想简单可靠地完成它,我建议使用Apache Jakarta Commons IO库IOUtils.toString(java.io.InputStream, java.lang.String)方法。

 String text = new Scanner( inputStream).useDelimiter("\\A").next(); 

更多在这里

您可以使用BufferedReader将流读入循环中的StringBuilder ,然后从StringBuilder获取完整内容:

 public String convertStreamToString(InputStream is) { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); StringBuilder sb = new StringBuilder(); String line = null; try { while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } } catch (IOException e) { e.printStackTrace(); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } 

完全披露 :这是我在KodeJava.org上找到的解决方案。 我在这里发表评论和评论。