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

标签 java file recursion filepath filepattern

我有以下目录/文件结构

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

这里我只想获取 Tests 目录中的文件列表。我怎样才能在java中实现它,我发现这很有帮助https://stackoverflow.com/a/24006711/1665592

下面列出了所有 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]

最佳答案

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());

关于Java递归列出特定模式目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62167363/

相关文章:

c - 将变量的值传递给C中的文件名

Chudnovsky 二元 split 和因式分解

Python:使用递归返回文件的完整路径

java - 分区相等子集和自顶向下TLE

java - 如何为 TensorFlow Lite 模型指定 Firebase 模型输入以对 Android 中的项目推荐进行预测

java - 使用带有自签名证书的 Elasticsearch Java REST API

java - jackson 无法识别的领域,即使它在类里面

c++ - MFC C++ : TODO <file description> has stopped working

javascript - 在 Java 和 Python 中实现相同的 XorShift

java - 如何使用 OneDrive SDK for Android 发送搜索请求