java - 像python中的os.walk一样使用Java定位硬盘中的文件

标签 java python

我是 Java 新手(学习了大约 2 周) 我试图找到最干净的方法来在 java 中进行全局文件搜索。 有没有可能在 python 中使用与 os.walk 类似的功能? 使用 os.walk 时,我只需要放置源代码应该从中开始的基本目录。

我找到了 Files.walk() 函数,但我无法使用正确的语法为其提供要返回的文件名。

我的主要目的是将文件名从主函数发送到搜索函数并接收该文件的绝对补丁。 有人可以帮忙吗?

最佳答案

您快完成了,Files.walk 是遍历目录中所有文件的正确方法。 Here's它的 javadoc,这就是它所说的:

Return a Stream that is lazily populated with Path by walking the file tree rooted at a given starting file.

您需要做的就是将此方法调用包装到另一个方法(接受路径和搜索字符串)并返回匹配文件列表,例如:

public List<String> search(String path, String searchString) throws Exception{
    Stream<Path> paths = Files.walk(Paths.get(path));
    try{
        List<String> files = paths
                .filter(Files::isRegularFile)
                .filter(p -> p.getFileName().toString().toLowerCase().contains(searchString))
                .map(p -> p.toString())
                .collect(Collectors.toList());
        return files;
    }finally{
        if(null != paths){
            paths.close();
        }
    }
}

这个例子只返回文件,如果你想让它也返回目录,那么你可以使用 Files.isDirectory 方法和 OR 条件。这是 isDirectory 的 javadoc .

关于java - 像python中的os.walk一样使用Java定位硬盘中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43951890/

相关文章:

java - 使用 jpathwatch 找出程序何时完成写入文件

java - Jooq 中的条件查询日志记录

python - 如何使用Scrapy使用 "skype_c2c_container"来抓取电话号码?

javascript - Django Python : Can't access JS object passed via AJAX from Python QueryDict

python - 查找一个数据帧的哪些行存在于另一个数据帧中

java - 打印 Java 热点 JIT 汇编代码

java - 如何解决 "static method ___ should be accessed in a static way"警告

Tokyo Cabinet 的 Python 表引擎绑定(bind)

java - 在 Java 中 MousePressed 之后,MouseMoved 不会被触发

javascript - VM2022 :2 Uncaught SyntaxError: Unexpected token : on AJAX call