源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Lua中实现递归删除一个文件夹

  • 时间:2020-06-17 13:09 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Lua中实现递归删除一个文件夹
在使用 quick-cocos2d-x 做项目热更新的时候,我需要建立临时文件夹以保存下载的更新包。在更新完成后,我需要删除这些临时文件和文件夹。 cocos2d-x 和 quick-cocos2d-x 都没有提供删除文件夹功能。我做了如下2个尝试: [b]1. 使用C++[/b] 在 cocos2d-x 2.x 中的 [url=https://github.com/cocos2d/cocos2d-x/tree/v2/extensions/AssetsManage]AssetsManager [/url]包中提供了一个 CreateDirectory 方法。这个方法可以跨平台支持创建文件夹。在实际项目中运行没有问题。
[url=https://github.com/keplerproject/luafilesystem]lfs(lua file sytem)[/url],好在 quick-cocos2d-x 已经包含了这个库。 lfs.rmdir 命令 和 os.remove 命令一样,只能删除空文件夹。因此实现类似 rm -rf 的功能, 必须要递归删除文件夹中所有的文件和子文件夹。 让我们扩展一下 os 包。
[u]复制代码[/u] 代码如下:
require("lfs") function os.exists(path)     return CCFileUtils:sharedFileUtils():isFileExist(path) end function os.mkdir(path)     if not os.exists(path) then         return lfs.mkdir(path)     end     return true end function os.rmdir(path)     print("os.rmdir:", path)     if os.exists(path) then         local function _rmdir(path)             local iter, dir_obj = lfs.dir(path)             while true do                 local dir = iter(dir_obj)                 if dir == nil then break end                 if dir ~= "." and dir ~= ".." then                     local curDir = path..dir                     local mode = lfs.attributes(curDir, "mode")                     if mode == "directory" then                         _rmdir(curDir.."/")                     elseif mode == "file" then                         os.remove(curDir)                     end                 end             end             local succ, des = os.remove(path)             if des then print(des) end             return succ         end         _rmdir(path)     end     return true end
上面的代码在 iOS 模拟器和 Android 真机上测试成功。Windows系统、Mac OSX 以及 iOS 真机还没有测试。我测试后会立即更新。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部