Android上文件名称允许使用哪些字符?

Android上的文件名允许使用哪些特殊字符?

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

另外,我可以保存Unicode名称的文件吗?

  1. 在Android上(至less默认)编码为UTF-8的文件名。

  2. 看起来像保留的文件名字符取决于挂载的文件系统( 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它们。