Android上文件名称允许使用哪些字符?
Android上的文件名允许使用哪些特殊字符?
~!@#$%^&*()_+/\.,
另外,我可以保存Unicode名称的文件吗?
-
在Android上(至less默认)编码为UTF-8的文件名。
-
看起来像保留的文件名字符取决于挂载的文件系统( http://en.wikipedia.org/wiki/Filename )。
我认为保留:
private static final String ReservedChars = "|\\?*<\":>+[]/'";
根据wiki和假设你正在使用FAT32的外部数据存储。
目录条目中的允许字符
是
除了值0-31,127(DEL)和:“* /:<>?\ | +,。; = [](低位az存储为AZ)以外的任何字节。
final String[] ReservedChars = {"|", "\\", "?", "*", "<", "\"", ":", ">"}; for(String c :ReservedChars){ System.out.println(dd.indexOf(c)); dd.indexOf(c); }
这是在Android中的文件名正确的InputFilter :
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; } };
我在Android 4.4.2的Galaxy Note 8上快速testing了这个。 默认的“我的文件”应用程序有助于将无效字符灰显,如下所示:
? :“* | / \ <>
我把所有其他特殊字符可用到一个文件名,并保存。 这可能在所有Android版本中都不一致,所以最好保守一点,并用相似的有意义的字符replace它们。