我是Java的新手(学习约2周) 我试图找到最简洁的方法来做java中的全局文件搜索。 是否有可能在python中使用类似的函数os.walk? 使用os.walk时,我只需要放置源应该从的基本目录。
我找到了Files.walk()函数但是我没有正确的语法来为它提供要返回的文件名。
我的主要目的是将主函数的文件名发送到搜索功能,并接收该文件的绝对补丁。 有人可以协助吗?
答案 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。