在安卓中,某个文件或者文件夹,在名称不变的情况下反复创建删除,会有一个概率出现这个错误,
解决方法有2,任选其一:
1.删除时:删除文件A前,重命名(使用renameto,__renameFile,reanme等,A to B),然后再删除。
2.新建时:在其他地方新建文件B,然后重命名为A;
推荐方法1:干净彻底。
个人猜测因引起的原因,肯定不准确,看看就好。欢迎指正:
EBUSY是errno中的定义为16的错误码,表示被占用而无法进行操作。
然而在POSIX的文档里,对于创建或者删除文件/文件夹返回的错误,并不包括EBUSY,EBUSY是他们预期之外错误码。网上搜的一种猜测,EBUSY是Fat32格式磁盘的bug。
举例:建立文件A,使用文件A,删除文件A,再建立文件A,就会报错。
原因可能是,删除文件A后,A的状态应该是《不存在,未使用》,但此时磁盘对于A错误的记录为,《不存在 ,使用中》,这就导致下次新建的时候,牵扯到正在使用中的文件,导致建立失败。
解决方法1是使用重命名为B,去掉对A的引用,然后删除B。但为什么可以rename成功,不清楚,猜测应该是文件修改自身,权限较高。
解决方法2是其他地方新建B,重命名为A,类似与合并操作,即使是在使用中也不影响。