Java IO,这些资源是否自动关闭?
在这段代码中,我读取了一个文本文件,当BufferedReader被“try resource”块关闭时,InputStreamReader会这样做,那么我可以保证所有资源都是这样关闭的吗Java IO,这些资源是否自动关闭?,java,file-io,io,stream,Java,File Io,Io,Stream,在这段代码中,我读取了一个文本文件,当BufferedReader被“try resource”块关闭时,InputStreamReader会这样做,那么我可以保证所有资源都是这样关闭的吗 try(final BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), charset))) { String line = null; wh
try(final BufferedReader br = new BufferedReader(new InputStreamReader(new
FileInputStream(file), charset))) {
String line = null;
while((line = br.readLine()) != null) {
builder.append(line);
}
}
在另一个例子中,我编写了一个文本文件,正如所写的,所有的资源最终都关闭了吗?是否必须调用flush()
是的,最外层的流调用其内部流的
close()
方法,因此您只需要调用最外层的流
您不需要调用flush()
,流将在必要时和关闭前刷新。去掉这个,代码就会看起来很完美
try(final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new
FileOutputStream(file), charset))) {
bw.write(text);
bw.flush();
}