open failed: EBUSY (Device or resource busy)的解决办法

在安卓中,某个文件或者文件夹,在名称不变的情况下反复创建删除,会有一个概率出现这个错误,

 

解决方法有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,类似与合并操作,即使是在使用中也不影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值