给定 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<String> stream
,使得stream
由is
的行组成。此外,不应立即读取一行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<String> lines=br.lines() ) /* your stream operation */
可以。
如果您需要更多的灵活性来定义模式,这也很好:new Scanner(is).findAll(以上是关于给定 Charset 将 InputStream 转换为 Stream<String>的主要内容,如果未能解决你的问题,请参考以下文章