【问题标题】:Convert InputStream into Stream<String> given a Charset给定 Charset 将 InputStream 转换为 Stream<String>
【发布时间】:2015-07-31 21:48:39
【问题描述】:

我想在给定Charset cs 的情况下将InputStream is 转换为Stream&lt;String&gt; stream,使得streamis 的行组成。此外,不应立即读取一行is,而应仅在stream 需要时读取。

【问题讨论】:

  • 你试过什么?问题应通过尝试或研究来表明努力
  • 必须是InputStream吗?如果您要读取文件,则可以使用Files.lines(Path path, Charset cs)。您可以查看此方法的源代码以找出您的解决方案。
  • 在我的例子中是来自HttpURLConnection#getInputStream()的InputStream。
  • 好的,我这样做了。见stackoverflow.com/questions/30336889/…

标签: java io stream java-8 java-stream


【解决方案1】:

我觉得你可以试试:

Stream<String> lines = new BufferedReader(new InputStreamReader(is, cs)).lines();

【讨论】:

  • 有没有办法在读取完整的 InputStream 后自动断开 HttpURLConnection?
  • 您可以在try-with-resources 语句中读取流,并可能在HttpURLConnection 对象上添加一个调用disconnect()finally 块:docs.oracle.com/javase/7/docs/api/java/net/…
  • try( BufferedReader br=new BufferedReader(new InputStreamReader(is, cs)); Stream&lt;String&gt; lines=br.lines() ) { /* your stream operation */ } 可以。
  • 如果您需要更多的灵活性来定义模式,这也很好:new Scanner(is).findAll()
猜你喜欢
  • 2015-07-31
  • 1970-01-01
  • 2023-03-31
  • 2021-12-05
  • 2018-08-25
  • 1970-01-01
  • 1970-01-01
  • 2021-07-22
  • 1970-01-01
相关资源
最近更新 更多