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();
}
}
}
5 ответов
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 довольно чертовски легко. The java.io.File
класс listFiles()
метод, который дает все File
дети каталога; есть также 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.что"?
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;
}