某次客户提出的问题,发现设备内目录删除总是失败报错。遂百度一波,得到临时解决方式,现记录下
在安卓中,某个文件或者文件夹,在名称不变的情况下反复创建删除,会有一个概率出现这个错误
解决方法:
查看是否有进程占用了此文件
删除时:删除文件A前,重命名(使用renameto,__renameFile,reanme等,A to B),然后再删除
新建时:在其他地方新建文件B,然后重命名为A;
这次的用重启大法解决了
引起的原因:
CSDN
上的解释,还不太清楚是咋回事,也没有验证:
个人猜测因引起的原因,肯定不准确,看看就好。欢迎指正:
EBUSY是errno中的定义为16的错误码,表示被占用而无法进行操作。
然而在POSIX的文档里,对于创建或者删除文件/文件夹返回的错误,并不包括EBUSY,EBUSY是他们预期之外错误码。网上搜的一种猜测,EBUSY是Fat32格式磁盘的bug。
举例:建立文件A,使用文件A,删除文件A,再建立文件A,就会报错。
原因可能是,删除文件A后,A的状态应该是《不存在,未使用》,但此时磁盘对于A错误的记录为,《不存在 ,使用中》,这就导致下次新建的时候,牵扯到正在使用中的文件,导致建立失败。