我需要编写一个需要遍历路径并执行一些逻辑的 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(文件名))
我这样解决了这个问题:
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
});
}