文件名字符导致打开失败:EINVAL(无效参数)

时间:2013-12-01 09:55:33

标签: android

我想使用以下格式创建一个文件名为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)

1 个答案:

答案 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

之外的任何Unicode