Java从目录中递归列出特定模式的文件。

问题描述 投票:1回答:2

我的目录文件结构如下

ABC
  -- Apps
  -- Tests
     -- file1.xml
     -- file2.xml
  -- AggTests
  -- UnitTests
PQR
  -- Apps
  -- Tests
     -- file3.xml
     -- file4.xml
  -- AggTests
  -- UnitTests

在这里,我只是想对文件列表从 Tests 目录。我如何在java中实现它,我发现这是有帮助的东西。https:/stackoverflow.coma240067111665592。

下面的东西是列出了所有的XML文件,但我需要从特定的目录下,称为--------。Tests?

try (Stream<Path> walk = Files.walk(Paths.get("C:\\projects"))) {

    List<String> fileList = walk.map(x -> x.toString())
            .filter(f -> f.endsWith(".xml")).collect(Collectors.toList());

    fileList.forEach(System.out::println);

} catch (IOException e) {
    e.printStackTrace();
}

最终,我需要 fileList = [file1.xml, file2.xml, file3.xml, file4.xml]

java file recursion filepath filepattern
2个回答
2
投票
List<String> fileList = walk.filter(x -> x.getParent().endsWith("Tests")).map(x -> x.toString())
                    .filter(f -> f.endsWith(".xml")).collect(Collectors.toList());

如果你只需要文件名,不需要整个路径,你可以这样做。

List<String> fileList = walk.filter(x -> x.getParent().endsWith("Tests")).map(x -> x.getFileName().toString())
                    .filter(f -> f.endsWith(".xml")).collect(Collectors.toList());

1
投票
public List<String> getAllFiles(String baseDirectory,String filesParentDirectory) throws IOException{
       return Files.walk(Paths.get(baseDirectory))
               .filter(Files::isRegularFile)
               .filter(x->(x.getParent().getFileName().toString().equals(filesParentDirectory)))
               .map(x->x.getFileName().toString()).collect(Collectors.toList());
    }
© www.soinside.com 2019 - 2024. All rights reserved.