JFile Chooser решает, выбран ли каталог или файл - PullRequest
1 голос
/ 29 июня 2010

Моя основная цель:

Если пользователь выбирает каталог, он сканирует всю папку на наличие mp3-файлов и возвращает их.Если он выбирает несколько mp3-файлов, он возвращает их.

Чтобы вернуть выбранные файлы, было легко, но сканировать каталог на наличие mp3-файлов не так просто, как я думал вначале.И я думаю, чтобы сделать это, я сначала новый, чтобы решить, выбрал ли пользователь файл или каталог, но как?Так как я могу получить оба с getSelectedFiles().

Ответы [ 2 ]

1 голос
/ 29 июня 2010

Вы можете использовать File.isDirectory() и File.isFile(), чтобы определить, является ли File каталогом или обычным файлом, соответственно.

0 голосов
/ 29 июня 2010

Поскольку вы хотите, чтобы ваши пользователи выбирали просто каталог, вам нужно будет найти mp3-файлы самостоятельно.

Вы можете рекурсивно пройти по каталогу в поисках файлов, заканчивающихся на ".mp3".

public static void findMp3s(File root, List<File> toBuildUp) {
    // if the File is not a directory, and the name ends with mp3
    // we will add it to our list of mp3s
    if (!root.isDirectory() && root.getName().endsWith("mp3")) {
        toBuildUp.add(root);
        return;
    }
    if (!file.isDirectory())
        return;
    // Now, we know that root is a Directory
    // We will look through every file and directory under root,
    // and recursively look for more mp3 files
    for (File f: root.listFiles()){
        findMp3s(f, toBuildUp);
    }
}

Предыдущий метод будет рекурсивно проходить по всем каталогам и заполнять toBuildUp каждым mp3-файлом в этом каталоге.

Этот метод будет вызываться следующим образом:

List<File> allMp3s = new ArrayList<File>();
findAllMp3s(selectedDirectory, allMp3s);
...