【发布时间】:2021-09-15 13:27:11
【问题描述】:
我们定期运行以下代码 sn-p 并且每次运行访问数千个文件。系统有时会开始提及“打开的文件过多”。对Java不太熟悉,我想知道这段代码是否有问题。我了解 try-construction 始终负责关闭文件。还是应该添加 finally 以防止文件保持打开状态?
...
try
(
FileInputStream fis = new FileInputStream(fileName);
InputStreamReader isr = new InputStreamReader(fis);
LineNumberReader in = new LineNumberReader(isr);
)
{
if (in != null)
{
String strLine;
while ((strLine = in.readLine()) != null)
{
strLine = strLine.substring(3);
printLine(bw, strLine);
}
}
} catch (Exception e)
{
e.printStackTrace(jcsErr);
}
...
【问题讨论】:
-
如果您在 Unix 上运行,如操作系统 lsof 应该可以帮助您列出 Java 进程打开的文件。
-
它的价值,无需检查
in != null。在 Java 中,new运算符 always 返回一个非空对象。 -
谢谢,不知道。
标签: java file-handling