java:根据目录和子目录中的名称搜索文件

我需要根据目录树中的名称查找文件。 然后显示此文件的路径。 我找到了这样的东西,但它根据扩展搜索。 任何人都可以帮助我如何根据我的需要重新编写代码…谢谢

public class filesFinder { public static void main(String[] args) { File root = new File("c:\\test"); try { String[] extensions = {"txt"}; boolean recursive = true; Collection files = FileUtils.listFiles(root, extensions, recursive); for (Iterator iterator = files.iterator(); iterator.hasNext();) { File file = (File) iterator.next(); System.out.println(file.getAbsolutePath()); } } catch (Exception e) { e.printStackTrace(); } } } 

 public class Test { public static void main(String[] args) { File root = new File("c:\\test"); String fileName = "a.txt"; try { boolean recursive = true; Collection files = FileUtils.listFiles(root, null, recursive); for (Iterator iterator = files.iterator(); iterator.hasNext();) { File file = (File) iterator.next(); if (file.getName().equals(fileName)) System.out.println(file.getAbsolutePath()); } } catch (Exception e) { e.printStackTrace(); } } } 

Java中的递归目录搜索非常简单。 java.io.File类有一个listFiles()方法,它给出了目录的所有FilelistFiles() ; 还有一个isDirectory()方法,您在File上调用它来确定是否应该递归搜索特定的子项。

您可以像这样使用FileFilter。

 public class MyFileNameFilter implements FilenameFilter { @Override public boolean accept(File arg0, String arg1) { // TODO Auto-generated method stub boolean result =false; if(arg1.startsWith("KB24")) result = true; return result; } 

}

并称之为这样

 File f = new File("C:\\WINDOWS"); String [] files = null; if(f.isDirectory()) { files = f.list(new MyFileNameFilter()); } for(String s: files) { System.out.print(s); System.out.print("\t"); } 

我真的不知道FileUtils做了什么,但是如何将扩展中的“txt”更改为“yourfile.whatever”?

 public static File find(String path, String fName) { File f = new File(path); if (fName.equalsIgnoreCase(f.getName())) return f; if (f.isDirectory()) { for (String aChild : f.list()) { File ff = find(path + File.separator + aChild, fName); if (ff != null) return ff; } } return null; }