2013-06-17 4 views
2

Я довольно новичок в android и java, мой фон - C# .net.Обработка ошибок при проблемах с кодировкой в ​​File.listFiles() в android

У меня есть общий сетевой ресурс, подключенный к/mnt/cifs/Audio с помощью CifsManager. Другие приложения на устройстве могут отображать файлы в этом каталоге.

Моя проблема заключается в том, что мое приложение переходит в цикл при вызове listFiles() в объекте File. Я заметил, что это потому, что в этой папке есть файл или папка с недопустимым измененным именем UTF-8. Из LogCat я вижу, что это когда создается NewStringUTF, очевидно, что это делается внутри, когда я перечисляю все файлы.

Как я могу обойти эту проблему? Есть ли способ справиться с этой ошибкой/исключением или есть другой способ получить все файлы & папок, не столкнувшись с этой проблемой?

Любая помощь была бы принята с благодарностью.

+0

Я предполагаю, что 'File.list()' или 'File.listFiles (filter)' (с фильтром, пропускающим файл) также не работают. –

+0

Файл.list() приводит к той же проблеме. Однако я не пробовал фильтр. Не знаю, как я могу объяснить все возможные недопустимые имена. – Xtr

+0

Добавление фильтра также не работает. Приложение переходит в цикл при выполнении файла file.getName() в файле, который содержит недопустимый символ в имени файла. Мне просто кажется странным, что это может сильно нарушить это, когда произойдет что-то такое незначительное. И приложения браузера файлов по-прежнему отображают этот проблемный файл, заменяя недопустимый символ. – Xtr

ответ

0

Не совсем ответ на мой вопрос, но он позволяет мне делать то, что я намеревался.

Теперь я использую библиотеку JCIFS для обработки всего монтажа и так далее. Затем эта библиотека обрабатывает кодировку внутри и с хорошими результатами.

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