Какие символы разрешены в именах файлов на Android?
какие специальные символы разрешены для имен файлов на Android?
~!@#$%^&*()_+/.,
кроме того, можно ли сохранить файл с именем Unicode?
6 ответов
на Android (по крайней мере по умолчанию) имена файлов в кодировке UTF-8.
похоже, что зарезервированные символы имени файла зависят от установленной файловой системы (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 широкий, список выше, казалось бы, будет разумным.