为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Java中读取/转换InputStream为String?

如何在Java中读取/转换InputStream为String?

达令说 2019-05-25 15:17:12
如何在Java中读取/转换InputStream为String?如果你有一个java.io.InputStream对象,你应该如何处理该对象并产生一个String?假设我有一个InputStream包含文本数据,并且我想将其转换为a String,所以例如我可以将其写入日志文件。采取InputStream并将其转换为最简单的方法是String什么?public String convertStreamToString(InputStream is) {     // ???}
查看完整描述

4 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

一个很好的方法是使用Apache公共资源 IOUtils将其复制InputStreamStringWriter...类似的东西

StringWriter writer = new StringWriter();IOUtils.copy(inputStream, writer, encoding);String theString = writer.toString();

甚至

// NB: does not close inputStream, you'll have to use try-with-resources for thatString theString = IOUtils.toString(inputStream, encoding);

或者,ByteArrayOutputStream如果您不想混合Streams和Writers ,则可以使用


查看完整回答
反对 回复 2019-05-25
?
富国沪深

TA贡献1790条经验 获得超9个赞

这是一种仅使用标准Java库的方法(请注意,流未关闭,您的里程可能会有所不同)。

static String convertStreamToString(java.io.InputStream is) {
    java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
    return s.hasNext() ? s.next() : "";}

我从“Stupid Scanner tricks”文章中学到了这个技巧。它工作的原因是因为Scanner迭代流中的标记,在这种情况下我们使用“输入边界的开头”(\ A)分隔标记,因此只为流的整个内容提供一个标记。

注意,如果您需要具体了解输入流的编码,可以为Scanner构造函数提供第二个参数,指示要使用的字符集(例如“UTF-8”)。

帽子小贴士也向Jacob说道,他曾经指着我说过这篇文章。


查看完整回答
反对 回复 2019-05-25
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

Apache Commons允许:

String myString = IOUtils.toString(myInputStream, "UTF-8");

当然,您可以选择除UTF-8之外的其他字符编码。

另见:( 文件


查看完整回答
反对 回复 2019-05-25
  • 4 回答
  • 0 关注
  • 1117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信