Java: поиск файла по его имени в каталоге и подкаталогах - PullRequest
7 голосов
/ 06 июня 2011

Мне нужно, чтобы найти файл по его имени в дереве каталогов. А потом покажи путь к этому файлу. Я нашел что-то вроде этого, но поиск по расширению. Кто-нибудь может мне помочь, как я могу переделать этот код для моих нужд ... спасибо

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 ]

11 голосов
/ 06 июня 2011
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();
        }
    }
}
3 голосов
/ 06 июня 2011

Рекурсивный поиск по каталогу в Java чертовски прост.Класс java.io.File имеет метод listFiles(), который дает все дочерние элементы File каталога;есть также метод isDirectory(), который вы вызываете для File, чтобы определить, следует ли вам выполнять рекурсивный поиск определенного дочернего элемента.

1 голос
/ 06 июня 2011

Вы можете использовать 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");
    }
0 голосов
/ 13 мая 2015
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;
}
0 голосов
/ 06 июня 2011

Я действительно не знаю, что делает FileUtils, но как насчет изменения "txt" в расширениях на "yourfile.whwhat"?

...