如何获取除某些子目录之外的所有子目录



我有一个目录列表,我在网页的选择菜单中使用了这些目录。

该列表包含某个目录下的所有子目录,使用以下 java 代码检索。

File directory = new File("C:\myHomeDirectory");
myDirectories = directory.listFiles((FileFilter) DirectoryFileFilter.DIRECTORY);

我想过滤myDirectory列表以排除不包含某个文件的子目录(例如称为testFolder)。换句话说,我希望myDirectory只包含具有名为testForder的子文件夹的文件。怎么做?

我想,你必须实现自己的FileFilter。

像这样:

 class CustomDirectoryFilter implements FileFilter {
private String allowedFileName = "testFolder";
  @Override
  public boolean accept(File pathname) {
    if (pathname.isDirectory()) {
      File[] subFiles = pathName.listFiles();
      for (File file : subFiles){
        if (file.getName().equals(allowedFileName)){
           return true;
        }
      }
    }
    return false; 
  }
}

解释:对于 C:\myHomeDirectory 中的每个文件,测试给定文件是否为目录。如果是,请获取其中所有文件的数组并测试,这些文件中的任何一个是否包含您的文件。如果找到这样的文件,允许该目录成为 myDirectory 的一部分

我没有机会测试此示例代码现在是否编译,但我希望它可以帮助您获得解决方案。

我发现所有带有子目录的文件名过滤器的东西都有点复杂。我现在使用它:

FileUtils.iterateFiles(rootdir, filefilter, dirfilter);
  <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-io</artifactId>
        <version>1.3.2</version>
        <type>jar</type>
   </dependency>
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.TrueFileFilter;
import org.apache.commons.io.filefilter.WildcardFileFilter;
import java.util.Iterator;
   File inputDir = new File(inputPath.toString());
   Iterator<File> matchesIterator = FileUtils.iterateFiles(
            inputDir, new WildcardFileFilter("somefilenamefilter*.xml"), TrueFileFilter.TRUE);
   while (matchesIterator.hasNext()) {
       File someFile = matchesIterator .next();
       ...
   } 

相关内容

  • 没有找到相关文章

最新更新