我使用以下代码将一些数据写入文件:
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter(file));
writer.write(...);
writer.flush();
}
finally {
if (writer != null)
writer.close();
}
多次调用该方法后,我得到了一个 FileNotFoundException,因为打开的文件太多。
显然,当我关闭编写器流时,java 不会关闭文件句柄。单独关闭 FileWriter 没有帮助。
有没有……我可以强制 java 关闭文件吗?
最佳答案
您的代码看起来不错。它可能是您应用程序的另一部分正在泄漏文件句柄。
您可以在 Linux 上使用 lsof
或在 Solaris 上使用 pfiles
来监视文件句柄。在 Windows 上,您可以使用 ProcessExplorer .
关于java.io.FileNotFoundException(打开的文件太多),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4095347/