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

Dan*_*nov 21 java inputstream stream

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

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

public String convertStreamToString(InputStream is) { 
    // ???
}
Run Code Online (Sandbox Code Playgroud)

tea*_*bot 24

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

  • 唯一的缺点是你需要在这个库中采用外部依赖,这可能并不总是需要的. (2认同)

ZZ *_*der 19

这是我的版本,

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
}
Run Code Online (Sandbox Code Playgroud)


jai*_*jai 8

String text = new Scanner(inputStream).useDelimiter("\\A").next();
Run Code Online (Sandbox Code Playgroud)

唯一棘手的是记住正则表达式\A,它与输入的开头匹配。这有效地告诉Scanner来标记整个流,从开始到(不合逻辑)下一开始......
-从甲骨文博客