如何打开并显示多个文件夹中的多个文件内容?

3
我有多个文件夹,每个文件夹里面包含多个文件。这是它们的组织方式。
Folder_1
  - Folder_1_File_1
  - Folder_1_File_2
  - Folder_1_File_3
  - Folder_1_File_4
  ...
Folder_2
  - Folder_2_File_1
  - Folder_2_File_2
  - Folder_2_File_3
  - Folder_2_File_4
  ...
Folder_3
  - Folder_3_File_1
  - Folder_3_File_2
  - Folder_3_File_3
  - Folder_3_File_4
  ...

我需要打开每个文件夹,读取每个文件,然后对每个文件夹中的所有文件执行一些计算并显示结果,然后移动到下一个文件夹并对其中的文件执行相同的计算。以下是我的代码。是否有其他更简单的方法?我的代码非常缓慢,有时甚至无法工作。

public void listFilesForFolder_Test(final File folder) {
        for (final File fileEntry : folder.listFiles()) {
            if (fileEntry.isDirectory()) {
                listFilesForFolder_Test(fileEntry);
            } else {

                Test_filenames.add(fileEntry.getAbsolutePath());
                Test_filename.add(fileEntry.getName());
                //  String content = FileUtils.readFileToString(file);
                 // read file and perform computations on it.

            }
        }
    } 

3
好的,您可以参考遍历文件树 - MadProgrammer
2个回答

4

Java 8引入了基于访问者模式的Files.walkFileTree() API,这使得掌握它变得更加容易:

File file = new File("/base/folder");
Files.walkFileTree(file.toPath(), new SimpleFileVisitor<>() {
    @Override
    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
        // do your thing here
        return FileVisitResult.CONTINUE;
    }
});

1
这段代码将为您提供常规文件(非文件夹),首先遍历给定路径树的其余部分。
public class ReadRecurssivelyFromFolder {


public static void main(String[] args) {
    try {
        Files.walk(Paths.get("/home/rafik/test" ))
                .filter(Files::isRegularFile)
                .forEach(System.out::println);

    } catch (IOException ex) {
        Logger.getLogger(ReadRecurssivelyFromFolder.class.getName()).log(Level.SEVERE, null, ex);
    }
}

输出:

enter image description here

然后,您可以根据给定的路径执行计算。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接