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

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

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

кроме того, можно ли сохранить файл с именем Unicode?

6 ответов


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

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

Я считал сдержанным:

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

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

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

are

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


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

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

это правильно 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;
        }  
    };

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

? : "* | / \

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


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

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

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

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