java - Java 文件对象可以是 linux 机器上 "Too many files open"错误消息的原因吗

标签 java linux itext

我正在 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/

相关文章:

java - 将数组中的数据向左移动

linux - 卸载 ("/proc") 挂载命名空间 "Invalid Argument"错误的系统调用

mysql - 是否可以在不转换为 Unicode 的情况下将印地语字符传递给 mysql 数据库?

java - 使用 fireTableRowsInserted(int,int) 更新模型和 JTable

java - 无法创建节点数组

linux - Emscripten 和空方 block

linux - samb.conf : Where is the "security" parameter?

c# - 使用 Itextsharp 读取本地化的 PDF 文件

c# - iTextSharp - 将文本置于现有内容之上

java - Elastic Search 7高级客户端使用映射创建索引