在这段代码中,我读取了一个文本文件,当 BufferedReader 被“try-resource” block 关闭时,InputStreamReader 也关闭了,那么我可以保证所有资源都像这样关闭吗?
try(final BufferedReader br = new BufferedReader(new InputStreamReader(new
FileInputStream(file), charset))) {
String line = null;
while((line = br.readLine()) != null) {
builder.append(line);
}
}
在另一个例子中,我写了一个文本文件,按照上面写的,最后所有的资源都关闭了吗?是否必须调用flush()?
try(final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new
FileOutputStream(file), charset))) {
bw.write(text);
bw.flush();
}
最佳答案
是的,最外层流会调用其内部流的 close()
方法,因此您只需调用最外层流即可。
您不需要调用flush()
,流将在必要时和关闭之前刷新。删除它,代码就会看起来很完美。
关于Java IO,这些资源会自动关闭吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49520965/