使用Java在硬盘中查找文件就像在python

时间:2017-05-13 10:13:52

标签: java python

我是Java的新手(学习约2周) 我试图找到最简洁的方法来做java中的全局文件搜索。 是否有可能在python中使用类似的函数os.walk? 使用os.walk时,我只需要放置源应该从的基本目录。

我找到了Files.walk()函数但是我没有正确的语法来为它提供要返回的文件名。

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

1 个答案:

答案 0 :(得分:1)

你几乎就在那里,Files.walk是迭代目录中所有文件的正确方法。 Here's javadoc,它就是这样说的:

  

通过遍历文件返回延迟填充Path的Stream   树根植于给定的起始文件。

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

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。