我想将 InputStream
的内容读入 String
:
private String readToString(InputStream stream) {
return new BufferedReader(new InputStreamReader(stream))
.lines().collect(Collectors.joining("\n"));
}
流来自
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);
}
}
还有一种更简单的方法可以做到这一点并且更清晰:
Files.readAllLines(YourPath)
关于java - BufferedReader 和 InputStreamReader 是否应该明确关闭?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47347575/