gpt4 book ai didi

java - 关闭嵌套的阅读器

转载 作者:搜寻专家 更新时间:2023-10-30 20:01:24 24 4
gpt4 key购买 nike

从文本文件中读取时,通常会创建一个 FileReader,然后将其嵌套在 BufferedReader 中。完成阅读后,我应该关闭两个阅读器中的哪一个?重要吗?

FileReader fr = null;
BufferedReader br = null;
try
{
fr = new FileReader(fileName);
br = new BufferedReader(fr);
// ...
}
finally
{
// should I close fr or br here?
}

谈到异常安全时,我有点偏执。当 BufferedReader 构造函数抛出异常时会发生什么?它会关闭嵌套阅读器吗?还是保证不扔?

最佳答案

通常,最外层流包装器上的close() 将调用包装流上的close()。但是,如果您认为构造函数可能会抛出异常,请自由使用 Closeable界面。

FileReader fr = new FileReader(fileName);
Closeable res = fr;
try {
BufferedReader br = new BufferedReader(fr);
res = br;
} finally {
res.close();
}

因此,即使 JVM 用完缓冲区的堆空间并抛出错误,您也不会泄漏文件句柄。

对于 Java 7 及更高版本,请使用 try-with-resources:

try (FileReader fr = new FileReader(fileName);
BufferedReader br = new BufferedReader(fr)) {
// do work
}

关于java - 关闭嵌套的阅读器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4909133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com