Как мне импортировать каталог (и подкаталог) в список Java? - PullRequest
0 голосов
/ 09 июня 2009

Вот код, который у меня есть:

import java.io.*;

class JAVAFilter implements FilenameFilter {
    public boolean accept(File dir, String name) {
        return (name.endsWith(".java"));
    }
}

public class tester {
   public static void main(String args[])
   {
        FilenameFilter filter = new JAVAFilter();
        File directory = new File("C:\\1.3\\");
        String filename[] = directory.list(filter);
   }
}

На этом этапе он будет хранить список всех * .java-файлов из каталога C: \ 1.3 \ в строковом массиве filename . Тем не менее, я хотел бы сохранить список всех java-файлов также в подкаталогах (желательно с указанием их пути в C: \ 1.3 \. Как мне это сделать? Спасибо!

Ответы [ 3 ]

3 голосов
/ 09 июня 2009

вы должны посмотреть на DirectoryWalker от Apache

3 голосов
/ 09 июня 2009

Боюсь, вы не можете сделать это методом list(FilenameFilter). Вам нужно будет перечислить все файлы и каталоги, а затем выполнить фильтрацию самостоятельно. Как то так:

public List<File> getFiles(File dir, FilenameFilter filter) {
    List<File> ret = new ArrayList<File>();
    for (File f : dir.listFiles()) {
        if (f.isDirectory()) {
            ret.addAll(getFiles(f, filter));
        } else if (filter.accept(dir, f.getName())) {
            ret.add(f);
        }
    }
    return ret;
}
1 голос
/ 09 июня 2009

Насколько я знаю, вам придется делать это вручную (рекурсивно), то есть вам придется вызывать список (фильтр) для всех подкаталогов C: \ 1.3 \ и т. Д ....

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