我想使用以下格式创建一个文件名为DAY-MONTH-YEAR--HOUR:MINUTE
的文件,但是当我使用--
或/和:
时,我会收到open failed: EINVAL
例外。我试图逃避这些角色,但没有快乐。是否有禁用文件名字符列表?
String time = String.valueOf(c.get(Calendar.DAY_OF_MONTH)) + "-" + String.valueOf(c.get(Calendar.MONTH) + 1) + "-" +
String.valueOf(c.get(Calendar.YEAR)) + "--" + String.valueOf(c.get(Calendar.HOUR)) + "\\:" + String.valueOf(c.get(Calendar.MINUTE));
bufOutstream = new BufferedOutputStream(new FileOutputStream(new File(env.getExternalStorageDirectory()+"/myapp/"+time+"."+fExtension)));
logcat的:
12-01 10:34:01.181 25839-26542/com.example.app W/System.err﹕ Caught IOException: /storage/sdcard0/myapp/1-12-2013--10\:34.aac: open failed: EINVAL (Invalid argument)
答案 0 :(得分:8)
请参阅此页面,您将找到完整列表。
http://en.wikipedia.org/wiki/Comparison_of_file_systems
虽然你的SD卡可能是内置的并且挂载为FUSE,但它可能仍然是FAT32文件系统。 FAT32的有效字符是(根据页面):
除了值0-31,127(DEL)和:" * / : < > ? \ | + , . ; = []
(低位a-z
之外的任何字节都存储为A-Z
)。使用VFAT LFN除NUL