0

我正在编写一些 Java 代码来遍历具有许多子文件夹的文件夹中具有相同名称的文件,并对每个文件执行一些逻辑:

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

上面是它的结构。

我该怎么做?

4

4 回答 4

4

如果您使用的是 Java 7,您可以尝试在 Path API 中实现的访问者模式:Files.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;
  }
});
于 2013-02-06T01:01:17.410 回答
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
        }
    }
}
于 2013-02-06T01:02:28.980 回答
0

看看Apache Commons 中的FileUtils类。

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

于 2013-02-06T01:02:46.990 回答
0

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

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

于 2017-09-01T22:12:37.793 回答