Какие специальные символы разрешены для имен файлов на Android?
[email protected]#$%^&*()_+/\.,
Кроме того, могу ли я сохранить файл с именем Unicode?
Какие специальные символы разрешены для имен файлов на Android?
[email protected]#$%^&*()_+/\.,
Кроме того, могу ли я сохранить файл с именем Unicode?
В Android (по крайней мере по умолчанию) имена файлов, закодированные как UTF-8.
Похоже, что зарезервированные имена имен файлов зависят от установленной файловой системы (http://en.wikipedia.org/wiki/Filename).
Я считал зарезервированным:
private static final String ReservedChars = "|\\?*<\":>+[]/'";
Согласно wiki и предполагая, что вы используете внешнее хранилище данных, которое имеет FAT32.
Допустимые символы в записи в каталоге
являются
Любой байт, за исключением значений 0-31, 127 (DEL) и: "*/: < > ?\| +,.; = [] (нижний регистр az сохраняется как AZ). С 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, поэтому, возможно, лучше быть консервативным и заменить их аналогично значимыми символами.