Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
#1

Недопустимый символ в имени файла - Android

29.03.2014, 05:29. Просмотров 715. Ответов 5
Метки нет (Все метки)

Приветствую. Господа есть список файлов к каждому из них нужно получить MIME тип. С этим со всем проблем нет. Но как только в имени файла встречается # выскакивает StringIndexOutOfBoundsException и что то совсем непонятно какого фига. Убираю # все работает, что наталкивает на мысль, что этот символ недопустим в имени файла. Но в списке недопустимых символов я его не нашел. Вообщем как обойти этот казус? Файловый менеджер в телефоне отображает все это дело без каких то проблем. Очень не хочется заморачиваться с парсером имен файлов для выявления "плохих" символов. Подскажите ченить)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2014, 05:29     Недопустимый символ в имени файла
Посмотрите здесь:

Android Преобразование имени контакта в строку
Android Как получить доступ к элементу в папке по имени?
Eclipse, как изменить домен по умолчанию в имени пакета при создании проекта? Android
Несколько фонов для приложения. Как загружать каждый по его номеру в имени файла Android
Android Регулярка в имени кнопки или id
Android Объявление static без имени
Android Динамическая смена имени ресурсного файла изображения
Русские буквы в имени ресурса Android
Отображение имени трека Android
Как обратиться к объекту по имени со строки? Android
Как получить значение текстового ресурса, не зная его имени? Android
Как обратиться к свойствам View по имени? Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
29.03.2014, 23:39     Недопустимый символ в имени файла #2
Цитата Сообщение от KillAndEat Посмотреть сообщение
Подскажите ченить
Показывайте проблемный кусок кода и стектрейс.
verylazy
Заблокирован
30.03.2014, 09:05     Недопустимый символ в имени файла #3
Я где то читал, что # используется для разделения чего-то в URI адресах. Может в этом дело?
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
31.03.2014, 12:36  [ТС]     Недопустимый символ в имени файла #4
angryrobot,

вылет в этом методе

Java
1
2
3
4
public String getMIME(File file) {
        FileNameMap fileNameMap = URLConnection.getFileNameMap();
        return fileNameMap.getContentTypeFor(file.getAbsolutePath());
    }
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Thread [<1> main] (Suspended (exception StringIndexOutOfBoundsException))   
    <VM does not provide monitor information>   
    String.startEndAndLength(int, int) line: 593    
    String.substring(int, int) line: 1474   
    DefaultFileNameMap.getContentTypeFor(String) line: 38   
    FileManagment.getMIME(File) line: 31    
    FileManagment.getList(String) line: 89  
    SystemOverview.updateList(String) line: 58  
    SystemOverview.onListItemClick(ListView, View, int, long) line: 46  
    ListFragment$2.onItemClick(AdapterView, View, int, long) line: 58   
    ListView(AdapterView).performItemClick(View, int, long) line: 298   
    ListView(AbsListView).performItemClick(View, int, long) line: 1088  
    AbsListView$PerformClick.run() line: 2861   
    AbsListView$1.run() line: 3535  
    Handler.handleCallback(Message) line: 615   
    ViewRootImpl$ViewRootHandler(Handler).dispatchMessage(Message) line: 92 
    Looper.loop() line: 137 
    ActivityThread.main(String[]) line: 4765    
    Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]  
    Method.invoke(Object, Object...) line: 511  
    ZygoteInit$MethodAndArgsCaller.run() line: 791  
    ZygoteInit.main(String[]) line: 558 
    NativeStart.main(String[]) line: not available [native method]


verylazy, может и по этому) как обойти то)
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
31.03.2014, 13:08     Недопустимый символ в имени файла #5
Цитата Сообщение от KillAndEat Посмотреть сообщение
вылет в этом методе
Попробовал, и у меня та же проблема. Есть простое решение: Передавайте в метод getContentTypeFor только расширение файла (вместе с последней точкой). Тогда всё заработает
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
31.03.2014, 13:34  [ТС]     Недопустимый символ в имени файла #6
angryrobot, смахивает на частное решение. Вдруг каким то чудесным образом этот символ окажется в расширении. Не хотелось бы чтоб приложение падало из за этого.

Java
1
2
3
4
5
6
7
[SPOILER]String type = null;
        String extension = MimeTypeMap.getFileExtensionFromUrl(URL);
        if (extension != null) {
            MimeTypeMap mime = MimeTypeMap.getSingleton();
            type = mime.getMimeTypeFromExtension(extension);
        }
        return type;[/SPOILER]
вот так все работает. может пригодится кому
Yandex
Объявления
31.03.2014, 13:34     Недопустимый символ в имени файла
Ответ Создать тему
Опции темы

Текущее время: 00:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru