Поиск файла с расширением .java - PullRequest
1 голос
/ 06 февраля 2010

Есть ли способ, чтобы сначала отфильтровать все файлы с расширением "java", а затем выполнить поиск, чтобы найти некоторые файлы с этим расширением? Вы можете объяснить с помощью фрагмента кода? спасибо

Ответы [ 4 ]

3 голосов
/ 06 февраля 2010

Я также голосую за Apache Commons.

http://www.kodejava.org/examples/359.html дает пример использования:

package org.kodejava.example.commons.io;

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.util.Collection;
import java.util.Iterator;

public class SearchFileRecursive {
    public static void main(String[] args) {
        File root = new File("/home/foobar/Personal/Examples");

        try {
            String[] extensions = {"xml", "java", "dat"};
            boolean recursive = true;

            //
            // Finds files within a root directory and optionally its
            // subdirectories which match an array of extensions. When the
            // extensions is null all files will be returned.
            //
            // This method will returns matched file as java.io.File
            //
            Collection files = FileUtils.listFiles(root, extensions, recursive);

            for (Iterator iterator = files.iterator(); iterator.hasNext();) {
                File file = (File) iterator.next();
                System.out.println("File = " + file.getAbsolutePath());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
1 голос
/ 06 февраля 2010

В Unix вы можете попробовать find <dir> -name '*.java' -exec grep <search string> {} \;

0 голосов
/ 26 мая 2015

Это легко сделать с помощью FileSearcher.java, найденного на GitHub

Пример поиска всех файлов .java на вашем компьютере будет выглядеть так:

public class FindDotJava {
    public static void main(String[] args) {
        ArrayList<File> dotJavaFiles = FileSearcher.findFiles(FileSearcher.SEARCH_EVERYTHING, "java");
    }
}

И вы также можете легко искать только текущую папку или текущую папку + вложенные папки, изменив SEARCH_EVERYTHING на CURRENT_FOLDER или SUBFOLDERS_AND_CURRENT.

Надеюсь, это поможет !!!

0 голосов
/ 06 февраля 2010

Если вам нужно сделать это в Java, самый простой способ - использовать Apache Commons IO и, в частности, FileUtils.iterateFiles () .

Сказав это, если это домашнее задание, я сомневаюсь, что вы получите много оценок за использование вышеупомянутого. Я подозреваю, что цель домашней работы состоит в том, чтобы проверить вашу способность писать рекурсивные подпрограммы (здесь есть ключ!), А не найти сторонние библиотеки (ценный навык сам по себе, ум).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...