Какие символы разрешены в именах файлов на Android?

Какие специальные символы разрешены для имен файлов на Android?

[email protected]#$%^&*()_+/\.,

Кроме того, могу ли я сохранить файл с именем Unicode?

Ответ 1

  • В Android (по крайней мере по умолчанию) имена файлов, закодированные как UTF-8.

  • Похоже, что зарезервированные имена имен файлов зависят от установленной файловой системы (http://en.wikipedia.org/wiki/Filename).

Я считал зарезервированным:

private static final String ReservedChars = "|\\?*<\":>+[]/'";

Ответ 2

Согласно wiki и предполагая, что вы используете внешнее хранилище данных, которое имеет FAT32.

Допустимые символы в записи в каталоге

являются

Любой байт, за исключением значений 0-31, 127 (DEL) и: "*/: < > ?\| +,.; = [] (нижний регистр az сохраняется как AZ). С VFAT LFN любой Unicode, кроме NUL

Ответ 3

final String[] ReservedChars = {"|", "\\", "?", "*", "<", "\"", ":", ">"};

for(String c :ReservedChars){
    System.out.println(dd.indexOf(c));
    dd.indexOf(c);
}

Ответ 4

Это правильно InputFilter для имен файлов в Android:

    InputFilter filter = new InputFilter()
    {
        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) 
        { 
            if (source.length() < 1) return null;
            char last = source.charAt(source.length() - 1);
            String reservedChars = "?:\"*|/\\<>";
            if(reservedChars.indexOf(last) > -1) return source.subSequence(0, source.length() - 1);
            return null;
        }  
    };

Ответ 5

Я быстро проверил это на Galaxy Note 8 на Android 4.4.2. В приложении "Мои файлы" по умолчанию скрываются недопустимые символы, которые выглядят следующим образом:

?: "* |/\ < >

Я поместил все остальные специальные символы в имя файла и сохранил. Это может быть непротиворечивым во всех версиях Android, поэтому, возможно, лучше быть консервативным и заменить их аналогично значимыми символами.