Как мне отсканировать папку в Java? - PullRequest
2 голосов
/ 04 марта 2010

Мне нужно сканировать определенную папку в Java и иметь возможность возвращать целое число файлов определенного типа (основываясь не только на расширении, но и на соглашении об именах). Например, я хочу знать, сколько файлов JPG в папке \ src есть простое целочисленное имя файла (скажем, от 1.JPG до 30.JPG). Может кто-то указать мне верное направление? Thx

Ответы [ 2 ]

10 голосов
/ 04 марта 2010

java.io.File.list(FilenameFilter) - это метод, который вы ищете.

1 голос
/ 05 марта 2010

У меня есть метод, который использует шаблон регулярных выражений для довольно сложной файловой структуры. Нечто подобное можно использовать, хотя я уверен, что оно может быть написано более кратко, чем мой пример (отредактированный в целях безопасности).

/**
     * Get all non-directory filenames from a given foo/flat directory
     * 
     * @param network
     * @param typeRegex
     * @param locationRegex
     * @return
     */
    public List<String> getFilteredFilenames(String network, String typeRegex, String locationRegex) {

        String regex = null;

        List<String> filenames = new ArrayList<String>();
        String directory;

        // Look at the something network
        if (network.equalsIgnoreCase("foo")) {

            // Get the foo files first
            directory = this.pathname + "/" + "foo/filtered/flat";
            File[] foofiles = getFilenames(directory);

            // run the regex if need be.
            if (locationRegex != null && typeRegex != null ) {
                regex = typeRegex + "." + locationRegex;

                //System.out.println(regex);
            }


            for (int i = 0; i < foofiles.length; i++) {
                if (foofiles[i].isFile()) {
                    String file = foofiles[i].getName();

                    if (regex == null) {
                        filenames.add(file);
                    }
                    else {
                        if (file.matches(regex)) {
                            filenames.add(file);
                        }
                    }
                }
            }
        }

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