mem*_*und 2 java inputstream bufferedreader java-8
我想把a的内容读InputStream成String:
private String readToString(InputStream stream) {
return new BufferedReader(new InputStreamReader(stream))
.lines().collect(Collectors.joining("\n"));
}
Run Code Online (Sandbox Code Playgroud)
流来自java.lang.Process.
问题:我是否必须明确关闭任何一个InputStream,InputStreamReader或者BufferedReader在这种情况下?
旁注:链接的问题不是重复的,因为我的问题是如何正确关闭流,而不是如何将流读取到字符串!
你只需要关闭outer包装器,但不要明确地这样做 - 有一个try-with-resource可以让你的生活更轻松:
public String readToString(InputStream stream) {
try (InputStreamReader reader = new InputStreamReader(stream);
BufferedReader br = new BufferedReader(reader)) {
return br.lines().collect(Collectors.joining("\n"));
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
Run Code Online (Sandbox Code Playgroud)
还有一种更简单的方法可以做到这一点并且更清晰:
Files.readAllLines(YourPath)
Run Code Online (Sandbox Code Playgroud)