我在 Java 类中创建了以下读取器、写入器等:
// reader
FileReader reader = new FileReader(filetoread);
BufferedReader r = new BufferedReader(reader);
// writer
FileWriter writer = new FileWriter(filetowrite);
PrintWriter writerpw = new PrintWriter(writer);
StreamTokenizer st = new StreamTokenizer(r);
我对关闭它们有一些疑问:
1、阅读的情况下如何关闭?
reader.close();
r.close();
我应该关闭两者,还是关闭一个就会关闭另一个?
2、如果是writer,应该如何关闭?
writer.close();
writerpw.close();
我应该关闭两者,还是关闭一个就会关闭另一个?
最佳答案
关闭最外面的一个就足够了,因为它也会关闭它包装的那个(BufferedReader
的 close
方法调用 in.close()
内部,其中 in
是它包装的读取器)。
同时,在 try-with-resources
语句中创建读取器时,您无需显式关闭其中任何一个,因为这将自动为您完成:
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
return br.readLine();
}
关于java - 如果我创建了一个 BufferedReader 实例,其参数为 FileReader,我必须关闭哪一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49707215/