急~!FileUtils 的 removeDirectory 问题

我这边的更新机制在去下整包的时候,会调用 removeDirectory 清除存放更新内容的文件夹,我怀疑有小部分人调用该API的时候,没能删除该文件夹,所以 我想问问该API有没有可能执行失败,或者,还有什么API能保证清除某个文件夹。

比如你正在读取某个大的文件的过程中,执行这个不会成功

我已经整个应用完全退出了,再次进入也没能删除

我做的热更新是搞2个文件夹的,这次用这个,下次用那个文件夹

说明你进入的时候就在读取那个文件夹里的内容

我这个发生的情况是,整包安装替换,,我在测过了,都是为问题的,就某些人有问题

root@R7sm:/data/data/com.joy1.wmjhyb # ls -l
drwxrwx–x u0_a739 u0_a739 2017-04-14 12:46 cache
drwxrwx–x u0_a739 u0_a739 2017-04-14 12:46 files
lrwxrwxrwx install install 2017-04-14 13:02 lib -> /data/app/com.joy1.wmjhyb-1/lib/arm
drwxrwx–x u0_a739 u0_a739 2017-04-14 12:46 shared_prefs

有没有可能 包安装替换的时候,用户权限的问题

你简单说下你文件夹里的内容,帮你分析下

主要就是 project.manifest 没被删掉,但是他是在整个可写路径的目录下(update)
我都是调用 removeDirectory 来删除 update的

那removeDirectory周围的代码贴出来看下逻辑

我做的热更新是搞2个文件夹的,这次用这个,下次用那个文件夹
用A文件夹,时候先删除B文件夹所有内容么?

if cc.FileUtils:getInstance():isDirectoryExist(path) then
    if cc.FileUtils:getInstance():removeDirectory(path) then
        release_print("delete update success!")
    else
        release_print("delete update fail!")
    end
end

我只有一个文件夹

removeDirectory前做了什么判断

源码AssetsManagerEx::loadLocalManifest 已经在判断并删除 文件夹了 但是我感觉应该是删不掉

版本判断是没 bug的,我感觉

会不会是先把目录设置 过去了 然后在调用了removeDirectory() 导致有些文件占用的情况。。推测

只有 isDirectoryExist

要更新到B之前删掉B的内容,更新到A之前删除A的内容

这方法 666666.感觉可行。