使用 Stream 遍历路径时实现自定义逻辑<Path>

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

我需要编写一个需要遍历路径并执行一些逻辑的 cronJob。这段代码是我的起点:

try(Stream<Path> walk = Files.walk(rootPath, FileVisitOption.FOLLOW_LINKS)){
        walk.sorted(Comparator.reverseOrder()).map(Path::toFile).peek(System.out::println).forEach(System.out::println);
    }catch (IOException e){
        e.printStackTrace();
    }

我需要做的是: 我拿走文件,验证他的名字,如果他的名字有某种特定的模式,我需要删除他。我想在不创建列表的情况下执行此操作,因为我的文件夹可能有 200-300 GB 大。我的问题是:我可以为每个文件实现一些自定义逻辑,例如,采用该文件或其全名执行一些逻辑并继续处理下一个文件的方法吗? 例如:.forEach(customMethod(文件名))

java java-stream nio
1个回答
0
投票

我这样解决了这个问题:

private static void deleteOrphanedMediaFilesUsingStreamEXAMPLE(final String path) throws IOException{
    Path dir = Paths.get(path);
    Stream<Path> walk = Files.walk(dir, FileVisitOption.FOLLOW_LINKS);

    walk.sorted(Comparator.reverseOrder()).forEach(path1 -> {
        String name = path1.getFileName().toString();
        //logic
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.