在大型目录UNIX上使用java Fileutils.listfiles

时间:2017-08-23 13:59:27

标签: java unix fileutils

我有一个工作树,如下:

Root
├─Site1
| ├─file.def
| ├─subfolder1
| └─subfolder2
├─Site2
| ├─file.def
| ├─subfolder1
| └─subfolder2
└─Site3
  └...

子文件夹中包含数千个文件。现在,我想读取file.def,其中包含有关站点子文件夹的数据,然后根据所述数据打开子文件夹。我很确定有更好的方法,但这是我的解决方案:

Collection<File> DefFiles = FileUtils.listFiles("C:/Root", acceptmapDef, true); //listFiles Accepting def files only
Collection<File> Otherfiles = FileUtils.listFiles("C:/Root"), acceptMapOthers, true); //listFiles Accepting every other file

for(Files def: DefFiles){
// Read def file
  for(Files file: OtherFiles){
     // creates a JSONObject from the correspondance between the def file 
     // and the html files found in the subfolders
    }
}

现在,当我在unix上运行我的脚本时,经过一段时间后,该过程显然会崩溃并且抛出“太多文件打开”异常。 IMO,脚本读取所有文件两次的事实是一个问题,但由于我是fileUtils的新手,这是我找到的唯一方法。任何想法将不胜感激

0 个答案:

没有答案