给定 Charset 将 InputStream 转换为 Stream<String>

Posted

技术标签:

【中文标题】给定 Charset 将 InputStream 转换为 Stream<String>【英文标题】:Convert InputStream into Stream<String> given a Charset 【发布时间】: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。 好的,我这样做了。见***.com/questions/30336889/… 【参考方案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()

以上是关于给定 Charset 将 InputStream 转换为 Stream<String>的主要内容,如果未能解决你的问题,请参考以下文章

我是不是应该始终将 InputStream 包装为 BufferedInputStream?

https

https

HttpsUtils

java HttpClientHelper

在 Groovy 中将字符串转换为 InputStream