我想将InputStream is
转换为一个Stream<String> stream
,并指定Charset cs
,使得stream
由is
的每一行组成。此外,is
的每一行都不应立即读取,只有在stream
需要时才应该读取。
我想将InputStream is
转换为一个Stream<String> stream
,并指定Charset cs
,使得stream
由is
的每一行组成。此外,is
的每一行都不应立即读取,只有在stream
需要时才应该读取。
我认为你可以尝试:
Stream<String> lines = new BufferedReader(new InputStreamReader(is, cs)).lines();
try-with-resources
语句中读取流,并可能添加一个 finally
块,该块调用 HttpURLConnection
对象上的 disconnect()
方法:http://docs.oracle.com/javase/7/docs/api/java/net/HttpURLConnection.html#disconnect() - Costi Ciudatutry( BufferedReader br=new BufferedReader(new InputStreamReader(is, cs)); Stream<String> lines=br.lines() ) { /* your stream operation */ }
即可。 - HolgerAutoCloseInputStream
,当流到达末尾时会自动关闭它。这样,您就可以安全地返回此Stream
,而无需将其包装在try-with-resources中。例如:new BufferedReader(new InputStreamReader(new AutoCloseInputStream(is), cs)).lines()
(顺便说一句@principal-ideal-domain,如果您仍然需要这个信息7年后...) - JelabyBufferedReader
。有没有办法将输入流(例如 System.in
)转换为 Path
对象,以便我可以像这样键入 Files.lines(InputStreamPathObject, charset)
? - Sergey Zolotarev
InputStream
吗?如果你要读取文件,那么可以使用Files.lines(Path path, Charset cs)
。你可以查看这个方法的源代码来找到解决方案。 - PshemoHttpURLConnection#getInputStream()
的输入流。 - principal-ideal-domain