Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java递归地列出特定模式目录中的文件_Java_File_Recursion_Filepath_Filepattern - Fatal编程技术网

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

Java递归地列出特定模式目录中的文件,java,file,recursion,filepath,filepattern,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中实现它,我发现这很有帮助 下面列出了所有XM

我已经了解了下面的目录/文件结构

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

这里我只想列出
Tests
目录中的文件列表。如何在java中实现它,我发现这很有帮助

下面列出了所有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();
}

try(streamwalk=Files.walk(path.get(“C:\\projects”)){
List fileList=walk.map(x->x.toString())
.filter(f->f.endsWith(“.xml”).collect(Collectors.toList());
fileList.forEach(System.out::println);
}捕获(IOE异常){
e、 printStackTrace();
}
最后,我需要
fileList=[file1.xml,file2.xml,file3.xml,file4.xml]
List fileList=walk.filter(x->x.getParent().endsWith(“Tests”).map(x->x.toString())
List<String> fileList = walk.filter(x -> x.getParent().endsWith("Tests")).map(x -> x.toString())
                    .filter(f -> f.endsWith(".xml")).collect(Collectors.toList());
.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());
List fileList=walk.filter(x->x.getParent().endsWith(“Tests”)).map(x->x.getFileName().toString())
.filter(f->f.endsWith(“.xml”).collect(Collectors.toList());
公共列表getAllFiles(String baseDirectory、String filesParentDirectory)引发IOException{
返回文件.walk(path.get(baseDirectory))
.filter(文件::isRegularFile)
.filter(x->(x.getParent().getFileName().toString().equals(FileParentDirectory)))
.map(x->x.getFileName().toString()).collect(collector.toList());
}

谢谢@viral verma,我正在寻找完整的文件路径。但是,是的,这两个例子都能帮助这个社区的人
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());
    }