Java在具有子文件夹的文件夹中循环使用具有相同名称的文件

时间:2013-02-06 00:55:41

标签: java file loops

我正在编写一些Java代码,在具有大量子文件夹的文件夹中循环使用相同名称的文件,并对每个文件执行一些逻辑操作:

parentFolder/
            subfolder1/file.txt
            subfolder2/file.txt
            subfolder3/file.txt
            ... ...
            subfolderx/file.txt

以上是它的外观结构。

我该怎么做?

4 个答案:

答案 0 :(得分:3)

如果您使用的是Java 7,则可以尝试路径API中实现的visitor patternFiles.walkFileTree(...)

使用它的最简单方法是传递SimpleFileVisitor的(匿名)子类,并在访问文件时执行任何操作。例如,

Files.walkFileTree(parentPath, new SimpleFileVisitor() {
  @Override FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
    // you can do whatever you want with "file" here.
    System.out.println("The file is: " + file);
    return FileVisitResult.CONTINUE;
  }
});

答案 1 :(得分:1)

String parentFolderPath = "parentFolder";
String fileName = "file.txt";
File parent = new File(parentFolderPath);
for (File subFolder : parent.listFiles()) {
    if (subFolder.isDirectory()) {
        File f = new File(subFolder, fileName);
        if (f.exists()) {
            // your code here
        }
    }
}

答案 2 :(得分:0)

在Apache Commons中查看FileUtils课程。

他们有FileUtilsiterateFiles(File directory,IOFileFilter fileFilter,IOFileFilter dirFilter)方法,您可以在其中指定文件过滤器。

答案 3 :(得分:0)

我只想抛弃另一种方法来做到这一点。这个文件搜索和处理软件: http://www.softpedia.com/get/File-managers/JFileProcessor.shtml https://github.com/stant/jfileprocessor

将允许您使用glob或正则表达式搜索文件,在子文件夹中搜索X或所有深度,按名称,大小,日期。您可以保存到列表窗口或文件。 然后你可以运行一个groovy(想想java)脚本来做任何你想要的文件列表; zip或tar它们,修改列表字符串,如sed,delete,move,copy files,grep或ls -l它们等等。 它还可以让您按下列表,例如添加,删除,从另一个列表中减去一个列表。