我正在 redhat linux 机器上运行 java 程序。该程序在我的 Windows 笔记本电脑上运行良好,但是,当我在 Linux 服务器上运行时,我收到一条消息:“打开的文件太多”。这是我正在使用的代码(大致 - 我取出了一些部分):
for(String f : fileList) {
File file = new File(f);
PdfReader reader = new PdfReader(f);
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
if(condition is true){
String s = FilenameUtils.getFullPath(f);
File renameFile = new File(s + newfilename );
FileUtils.moveFile(file, renameFile);
break;
}
}
}
fileList 的长度通常在 10,000 到 100,000 个元素之间。我知道我应该关闭 PdfReader
对象 - 我会的。但是,我想知道常规 Java File
对象是否也会导致“打开的文件过多”错误,如果是这样,我该如何正确地“关闭”这些类型的对象?
最佳答案
没有。 Java File
对象基本上包装了一个文件名,但它不包含打开的文件句柄,直到您使用它来打开流或阅读器。
关于java - Java 文件对象可以是 linux 机器上 "Too many files open"错误消息的原因吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26111860/