2010-06-09 3 views
2

Вопрос: Как вы программно различаете директории и обычные файлы в папке с ресурсами?Определение файла файла в папке с активами

При использовании AssetManager для доступа к файлам в папке с ресурсами кажется невозможным определить, является ли файл фактически файлом или каталогом. Вы получаете список файлов из метода list, а затем открываете файл, используя метод open. Я думал, возможно, используя метод openFd для получения дескриптора файла актива (а затем последующего запроса нормального дескриптора файла) предоставит мне некоторую информацию. Но запрос файлового дескриптора для каталога приводит к исключению IOException (что имеет смысл, так как это означало бы, что каталог имеет файловый дескриптор ...?).

В настоящее время я полагаюсь на это IOException (в результате попытки открыть каталог в папке с ресурсами), чтобы определить, действительно ли файл является каталогом. (Открытие обычного файла работает просто отлично). Это кажется плохой идеей. Любые другие предложения по разграничению между файлом и каталогом?

+2

Как вы упорядочиваете свои файлы в каталоге активов? Разве вы не можете хранить файлы , отделенные от папок, вместо того, чтобы смешивать все теги? –

+1

Согласовано. Вы тот, кто вводит содержимое каталога 'assets /'. Следовательно, вам не нужно гадать, что такое и не является каталогом. – CommonsWare

+0

Независимо от того, как вы размещаете файлы в папке 'assets /', эта проблема существует. Метод 'list' отправляет обратно массив' String [] 'всех файлов и каталогов, расположенных в запрошенном пути каталога (например,' image.jpg', 'music.mp3',' Tools'). Если вы хотите иметь какую-либо структуру каталогов внутри 'assets /', вы столкнетесь с этой проблемой. – ChaimKut

ответ

1

Я согласен с комментариями к вашему сообщению. Но чтобы ответить на ваш вопрос, сделать объект File указал на каталог активов File root = new File("path/to/directory");

Затем вы можете извлечь все свои вложенные файлы и каталоги, как этот File[] files = root.listFiles();

После того, как у вас есть список, вы можете определить, что есть что используя File.isDirectory().

Что касается определения типов файлов, это так же просто, как использование String.subString() для захвата символа после последнего периода.

надеюсь, что это поможет

Смежные вопросы