是否应该向 BufferedReaders 传递一个动态 FileReader?
Should BufferedReaders be passed a dynamic FileReader?
如问题所述,传递动态 FileReader
是不好的做法吗? this/can this FileReader
是否应该足够关闭?
BufferedReader buffReader = new BufferedReader(
new FileReader(new File("C:/Path/To/File.txt")));
.... do something
buffReader.close();
FileReader
也要关闭吗?这样做需要分居吗?
也许是个简单的问题,但我对Java IO 不是很了解;如果是这样的话,我们深表歉意。提前致谢!
不,没有必要。 buffReader.close()
也会关闭 FileReader。
出于某种原因,Javadoc 中似乎没有提到这一点。但是,如果您查看 BufferedReader
的源代码,您会发现 close
定义为:
public void close() throws IOException {
synchronized (lock) {
if (in == null)
return;
in.close();
in = null;
cb = null;
}
}
其中 in
是包装的 Reader
(在本例中为 FileReader
)。因此,关闭 BufferedReader
也会关闭 FileReader
。
我所知道的所有 "wrappers" 都是这种情况 - InputStream
s、OutputStream
s、Reader
s 和 Writer
s,包括像 InputStreamReader
.
这样的东西
如问题所述,传递动态 FileReader
是不好的做法吗? this/can this FileReader
是否应该足够关闭?
BufferedReader buffReader = new BufferedReader(
new FileReader(new File("C:/Path/To/File.txt")));
.... do something
buffReader.close();
FileReader
也要关闭吗?这样做需要分居吗?
也许是个简单的问题,但我对Java IO 不是很了解;如果是这样的话,我们深表歉意。提前致谢!
不,没有必要。 buffReader.close()
也会关闭 FileReader。
出于某种原因,Javadoc 中似乎没有提到这一点。但是,如果您查看 BufferedReader
的源代码,您会发现 close
定义为:
public void close() throws IOException {
synchronized (lock) {
if (in == null)
return;
in.close();
in = null;
cb = null;
}
}
其中 in
是包装的 Reader
(在本例中为 FileReader
)。因此,关闭 BufferedReader
也会关闭 FileReader
。
我所知道的所有 "wrappers" 都是这种情况 - InputStream
s、OutputStream
s、Reader
s 和 Writer
s,包括像 InputStreamReader
.