Какие символы разрешены в именах файлов на Android? - PullRequest
45 голосов
/ 21 апреля 2010

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

~!@#$%^&*()_+/\.,

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

Ответы [ 6 ]

35 голосов
/ 24 апреля 2010
  1. На Android (по крайней мере по умолчанию) имена файлов, закодированные как UTF-8.

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

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

private static final String ReservedChars = "|\\?*<\":>+[]/'";
9 голосов
/ 22 ноября 2012

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

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

есть

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

5 голосов
/ 07 декабря 2011
final String[] ReservedChars = {"|", "\\", "?", "*", "<", "\"", ":", ">"};

for(String c :ReservedChars){
    System.out.println(dd.indexOf(c));
    dd.indexOf(c);
}
4 голосов
/ 14 февраля 2015

Это правильно 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;
        }  
    };
2 голосов
/ 05 ноября 2014

Я быстро проверил это на моей Galaxy Note 8 на Android 4.4.2. Приложение «Мои файлы» по умолчанию полезно отображает недопустимые символы:

? : "* | / \ <>

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

0 голосов
/ 10 января 2018

Это явно зависит от файловой системы и операционной системы Android. На моем oneplus / oxygenOS единственные символы в принятом ответе

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

, которые я не мог использовать для переименования файла, были / и *

Однако для всей Android список, представленный выше, выглядит разумным.

...