![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Здравствуйте. Делал как-то мп3 плеер. Есть каталог "Музыка" (5Гб). В нем каталоги: "Поп", "Рок", "Рэп" и пр. в которых разные каталоги и файлы мп3. И встала задача: Окрыть эту папку "Музыка" и поместить ее в плей-лист. Такое мне не удалось реализовать, поэтому обошелся банальным browseForOpenMultiple() и перетаскиванием одного или нескольких файлов с помощью NativeDragManager. Но месяц спустя мне стало интересно можно ли все-таки такое сделать? Ведь даже в том же Windows Media Player я могу перетянуть целые папки, программа отфильтрирует медиа - файлы и вставит их в плей лист.
Вот ход моих мыслей: С помощью browseForDirectory выбираем нужную нам папку. Или с помощью NativeDragManager перетаскиваем нужную папку из проводника. В первом и втором случае мы будем иметь обьект File ссылающийся на эту папку. Теперь ступор! Как отфильтрировать эту папку, чтобы в приложение поступили только мп3 файлы? Проверять каждый подкаталог - является ли он каталогом, потом проверять каждый файл в нем, является ли он мп3, потом переходить к другой папке и т.д. это бред. Если вложенность каталогов будет хотя бы 20, то эйр на таком цикле просто вылетит. Какие у Вас, господа мысли по этому поводу? Или есть где-то встроенные методы, которые я просто пропустил?
__________________
Я мало чего умею, но зато хорошо умею учиться... |
|
|||||
|
Цитата:
Добавлено через 2 минуты Кроме того, в цыкле мне нужно проверить, является ли каждый файл mp3, а не txt или jpg и только тогда добавлять его в плей-лист
__________________
Я мало чего умею, но зато хорошо умею учиться... |
|
|||||
|
Banned
Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
для этого пишутся рекурсивные функции
как-то писал подобное, но что-то не могу найти |
|
|||||
|
Ну это понятно. Вот сейчас как раз думаю, как написать такую функцию, чтобы она была независима от выполнения основного кода. Ведь если на долго зациклить, то комп не выдержит. Думаю привязать ее к таймеру и с течением времени обрабатывать определенное количество файлов.
__________________
Я мало чего умею, но зато хорошо умею учиться... |
|
|||||
|
DaFive, спасибо большое, метод хороший. Даже красивее, чем та пародия, над которой я ломал голову. Папку с тремя папками и 100 картинок пролистал мгновенно. А вот когда рискнул в него передать: "C:/Windows/", AIR загнулся, как наша корова... Можно этот метод сделать как-то независимым от времени. Что-то типа, как я описал постом выше?
__________________
Я мало чего умею, но зато хорошо умею учиться... |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:03. |
|
|
« Предыдущая тема | Следующая тема » |
|
|