Java File API в выпуске Windows 7 - PullRequest
       10

Java File API в выпуске Windows 7

1 голос
/ 06 января 2012

По сути, я просто пытаюсь запустить список всех файлов в папке, используя функцию list из класса Java File: artistList = (new File(myPathName)).list();

Но то, что я получаю, - это некоторые отсутствующие файлы, даже после того, как я "показываю скрытые файлы" в Windows 7. Мне интересно, где эти файлы.

Если это поможет, путь, в котором я ищу, - это папка, подобная /media, которую я организовал в /media/artist/album/title.mp3 для всех данных моей песни. Дополнительные файлы, которые я в итоге обнаружил, - это jpeg-файлы AlbumArt (и я предварительно использовал songbird version 9 для сортировки папок, я просто пытаюсь переименовать совпадение тегов ID3 ​​самостоятельно с помощью небольшой программы на Java).

1 Ответ

0 голосов
/ 06 января 2012

С организацией, которую вы описали, в каталоге /media, где начинается поиск / листинг, не будет медиа-файлов, вам придется перемещаться по проблемным подкаталогам, пока не дойдете до /media/artist/album, оттуда вы сможете получить файлы, которые действительно ищете за. Также вам может понадобиться добавить фильтр в метод list и реализовать метод accept фильтра, чтобы удалить миниатюры и скрытые метафайлы.

Вот фрагмент кода (непроверенный), который может вам помочь

private final static Set<String> mediaExtensions; 

static {
    mediaExtensions = new HashSet<String>();
    mediaExtensions.add(".mp3");
    mediaExtensions.add(".wav");
    mediaExtensions.add(".ogg");
    // and so on
}

public static void list(File file, List<File> result) {
    if(file.isFile()) {
        result.add(file);
    } else if(file.isDirectory()) {
        File files[] = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                boolean accept = false;
                int i = pathname.getName().lastIndexOf('.');
                if(i != -1) {
                    String ext = pathname.getName().substring(i);
                    accept = (! pathname.isHidden()) &&
                        mediaExtensions.contains(ext);  
                }
                return accept;
            }
        });
        if(files != null) {
            for(File f : files) {
                list(f, result);
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...