首页 > 解决方案 > 在Java文件夹中递归查找文件/目录

问题描述

我想获取包含某个正则表达式的某个文件夹的所有子订单(不仅是直接子订单,还有所有子子订单等-> 递归)。这应该尽可能高效。

正则表达式由用户输入。例如,他输入“hello”,然后一个文件夹的所有子订单 (myFolder)应该列出其中包含正则表达式“.* hello .*”。更具体地说,应该返回找到的文件夹的路径。

我已经做了一些研究并找到了 nio.file,但我不确定在这种情况下 nio.file 是否比 io.file 快。我对这整个话题都很陌生,所以如果我说了什么不正确的话,请原谅。我使用 Java 11。

例如,我还发现了一个这样的函数,它可以工作:

Stream s = Files.find(
                Paths.get("myFolder"), 
                Integer.MAX_VALUE,
                (path, basicFileAttributes) -> {
                    File f = path.toFile();
                    return f.getName().matches(".*'myRegexHere'.*") && f.isDirectory() && !f.isHidden();
                });

但我不确定是否有更有效的功能/方法或更有效的方法。我愿意接受建议和想法。

编辑

有没有办法从搜索中排除某些文件夹?

标签: javafile-ionio

解决方案


推荐阅读