问题
What special characters are allowed for file names on Android?
~!@#$%^&*()_+/\\.,
Also, can I save file with Unicode name?
回答1:
On Android (at least by default) the file names encoded as UTF-8.
Looks like reserved file name characters depend on filesystem mounted (http://en.wikipedia.org/wiki/Filename).
I considered as reserved:
private static final String ReservedChars = "|\\?*<\":>+[]/'";
回答2:
According to wiki and assuming that you are using external data storage which has FAT32.
Allowable characters in directory entries
are
Any byte except for values 0-31, 127 (DEL) and: " * / : < > ? \ | + , . ; = [] (lowcase a-z are stored as A-Z). With VFAT LFN any Unicode except NUL
回答3:
final String[] ReservedChars = {"|", "\\", "?", "*", "<", "\"", ":", ">"};
for(String c :ReservedChars){
System.out.println(dd.indexOf(c));
dd.indexOf(c);
}
回答4:
This is correct InputFilter for File Names in 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:
I tested this quickly on my Galaxy Note 8 on Android 4.4.2. The default My Files app helpfully greys out invalid characters which are as follows:
? : " * | / \ < >
I put all the other special chars available into a filename and it saved. This may not be consistent across all Android versions so maybe it's best to be conservative and replace them with similarly meaningful characters.
回答6:
This is clearly filesystem and Android operating system dependent. On my oneplus/oxygenOS, the only characters in the accepted answer
private static final String ReservedChars = "|\\?*<\":>+[]/'";
that I could not use to rename a file were / and *
However, Android wide, the list above would seem to be sensible.
来源:https://stackoverflow.com/questions/2679699/what-characters-allowed-in-file-names-on-android