我是 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/