我必须搜索可以位于任何目录或驱动器中的文件。它应该与任何操作系统兼容。当我用谷歌搜索时,大多数代码都会迭代特定的目录,而不是完整的文件系统。有什么办法可以高效地做到这一点吗?任何帮助或建议将不胜感激。
下面的代码是我从http://www.mkyong.com/java/how-to-traverse-a-directory-structure-in-java/获得的,但是我们必须传递一些目录作为参数。有没有办法概括以获得所有位置?
public static void main (String args[]) {
displayIt(new File("C:\\"));
}
public static void displayIt(File node){
System.out.println(node.getAbsoluteFile());
if(node.isDirectory()){
String[] subNote = node.list();
for(String filename : subNote){
displayIt(new File(node, filename));
}
}
最佳答案
Apache Commons-IO 是适合此类操作的良好 API。对于 Unix 系统,您可以只使用根“/”,但这不适用于 Windows,因此您必须询问所有根并迭代它们:
File[] roots = File.listRoots();
Collection<File> files = new ArrayList<File>();
for(File root : roots) {
files.addAll(FileUtils.listFiles(
root,
new RegexFileFilter(<your regex filter>),
DirectoryFileFilter.DIRECTORY
));
}
关于Java遍历所有目录并查找文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12910456/