添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

某次客户提出的问题,发现设备内目录删除总是失败报错。遂百度一波,得到临时解决方式,现记录下

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

解决方法:

  • 查看是否有进程占用了此文件
  • 删除时:删除文件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错误的记录为,《不存在 ,使用中》,这就导致下次新建的时候,牵扯到正在使用中的文件,导致建立失败。