如果我使用来自FileReader的参数创建了一个BufferedReader实例,那么我必须关闭哪一个?

时间:2018-04-07 12:07:32

标签: java bufferedreader filereader filewriter printwriter

我在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.close();
writerpw.close();

我应该关闭两者吗?或者关闭一个会关闭另一个吗?

1 个答案:

答案 0 :(得分:2)

关闭最外面的一个就足够了,因为它也会关闭它所包含的那个(内部String调用close的{​​{1}}方法,其中BufferedReader是它包装的读者。)

同时,在in.close()语句中创建阅读器时,您不需要明确关闭其中任何一个阅读器,因为这将自动为您完成:

in