亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

Lua中實現遞歸刪除一個文件夾

2024-07-21 23:04:23
字體:
來源:轉載
供稿:網友

在使用 quick-cocos2d-x 做項目熱更新的時候,我需要建立臨時文件夾以保存下載的更新包。在更新完成后,我需要刪除這些臨時文件和文件夾。

cocos2d-x 和 quick-cocos2d-x 都沒有提供刪除文件夾功能。我做了如下2個嘗試:

1. 使用C++

在 cocos2d-x 2.x 中的 AssetsManager 包中提供了一個 CreateDirectory 方法。這個方法可以跨平臺支持創建文件夾。在實際項目中運行沒有問題。

 

復制代碼 代碼如下:

bool AssetsManager::createDirectory(const char *path)
{
#if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32)
    mode_t processMask = umask(0);
    int ret = mkdir(path, S_IRWXU | S_IRWXG | S_IRWXO);
    umask(processMask);
    if (ret != 0 && (errno != EEXIST))
    {
        return false;
    }

 

    return true;
#else
    BOOL ret = CreateDirectoryA(path, NULL);
if (!ret && ERROR_ALREADY_EXISTS != GetLastError())
{
return false;
}
    return true;
#endif
}


在 cocos2d-x 2.x 的 AssetsManager sample 范例中提供了一個 reset 方法,這個方法使用系統命令遞歸刪除文件夾。
復制代碼 代碼如下:

void UpdateLayer::reset(cocos2d::CCObject *pSender)
{
    pProgressLabel->setString(" ");

 

    // Remove downloaded files
#if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32)
    string command = "rm -r ";
    // Path may include space.
    command += "/"" + pathToSave + "/"";
    system(command.c_str());
#else
    string command = "rd /s /q ";
    // Path may include space.
    command += "/"" + pathToSave + "/"";
    system(command.c_str());
#endif
    // Delete recorded version codes.
    getAssetsManager()->deleteVersion();

    createDownloadedDir();
}


但是,這個 reset 在 ios 模擬器中運行的時候,xcode會報這樣的warinng:

 

The iOS Simulator libSystem was initialized out of order. This is most often caused by running host executables or inserting host dylibs. In the future, this will cause an abort.

因此,我轉而考慮另一個方案。

2. 純lua

純 lua 其實是個噱頭。這里還是要依賴 lfs(lua file sytem),好在 quick-cocos2d-x 已經包含了這個庫。

lfs.rmdir 命令 和 os.remove 命令一樣,只能刪除空文件夾。因此實現類似 rm -rf 的功能, 必須要遞歸刪除文件夾中所有的文件和子文件夾。

讓我們擴展一下 os 包。

復制代碼 代碼如下:

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 真機還沒有測試。我測試后會立即更新。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲欧美另类中文| 欧美日韩免费观看中文| 2020欧美日韩在线视频| 欧美极品少妇xxxxⅹ喷水| 欧美另类第一页| 91黑丝在线观看| 欧美精品电影免费在线观看| 日韩在线视频免费观看| 亚洲精品久久久久久下一站| 国产精品igao视频| 亚洲娇小xxxx欧美娇小| 国产精品日韩久久久久| 777精品视频| 国产在线观看91精品一区| 97人人爽人人喊人人模波多| 色青青草原桃花久久综合| 九九久久综合网站| 欧美激情一区二区久久久| 欧美在线视频在线播放完整版免费观看| 国产精品爽黄69天堂a| 亚洲综合自拍一区| 欧美夜福利tv在线| 久久久国产视频91| 欧美一级bbbbb性bbbb喷潮片| 日本电影亚洲天堂| 国产v综合v亚洲欧美久久| 91久久在线播放| 国产精品视频精品视频| 7m第一福利500精品视频| 庆余年2免费日韩剧观看大牛| 热99在线视频| 国产视频精品一区二区三区| 成人免费在线视频网址| 亚洲成人激情视频| 国产精品嫩草影院久久久| 久久综合88中文色鬼| 欧美日韩精品在线视频| 欧美肥臀大乳一区二区免费视频| 欧美大片第1页| 欧美精品久久久久久久免费观看| 欧美激情女人20p| 欧美精品电影在线| 国产成人精品av在线| 国产激情久久久| 国产精品亚洲一区二区三区| 欧美电影在线观看网站| 亚洲精品免费在线视频| 欧美一区第一页| 国产在线999| 日韩一中文字幕| 国产激情视频一区| 国产成一区二区| 91po在线观看91精品国产性色| 成人情趣片在线观看免费| 麻豆成人在线看| 在线播放日韩av| 亚洲色图激情小说| 日韩在线观看免费全| 国产欧美日韩精品在线观看| 欧美色xxxx| 国产精品精品国产| 精品中文字幕在线观看| 精品久久久久久久久久久久| 91精品国产亚洲| 国产一区二区三区在线观看视频| 亚洲精品日韩激情在线电影| 国产在线观看不卡| 国产精品爽黄69天堂a| 亚洲精品一区av在线播放| 日本19禁啪啪免费观看www| 久久亚洲一区二区三区四区五区高| 欧美精品在线观看91| 国产午夜精品免费一区二区三区| 亚洲性日韩精品一区二区| 国产精品久久久久久搜索| 久久久亚洲成人| 黄色成人av在线| 国产精品91久久久| 国产精品欧美亚洲777777| 狠狠躁夜夜躁久久躁别揉| 精品久久久久久久久久久久久| 一本色道久久综合亚洲精品小说| 国产精品夜色7777狼人| 国产精品成人av在线| 欧美国产日韩精品| 国产在线播放91| 亚洲国产一区自拍| 欧美理论电影在线观看| 精品国产91久久久久久| 亚洲国产精品中文| 91手机视频在线观看| 日韩精品高清在线观看| 97国产在线视频| 国产成人在线一区| 国产日韩欧美日韩大片| 亚洲成人黄色在线观看| 欧美性生交大片免费| 国产精品日韩欧美| 中文字幕av一区中文字幕天堂| 国产免费观看久久黄| 日韩中文字幕国产精品| 国产有码一区二区| 韩国三级电影久久久久久| 国产精品白嫩初高中害羞小美女| 伊人一区二区三区久久精品| 欧美在线激情网| 成年人精品视频| 精品亚洲一区二区三区| 久久在线免费观看视频| 欧美天天综合色影久久精品| 精品久久久久久久中文字幕| 国产视频亚洲精品| 久久激情视频免费观看| 日韩中文有码在线视频| 亚洲欧洲午夜一线一品| 国产精品国语对白| 亚洲人成网站在线播| 成人国产精品久久久久久亚洲| 国产精品视频在线观看| 欧美亚洲国产日韩2020| 亚洲自拍偷拍第一页| 久久精品色欧美aⅴ一区二区| 97久久久免费福利网址| 色爱精品视频一区| 欧美综合在线观看| 国产精品私拍pans大尺度在线| 欧美色xxxx| 精品国产欧美成人夜夜嗨| 欧美专区在线播放| 国产日韩换脸av一区在线观看| 国产亚洲精品久久久| 亚洲欧洲国产一区| 久久久久久久一| 国产精品福利片| 久久福利网址导航| 色伦专区97中文字幕| 91色琪琪电影亚洲精品久久| 欧美日韩免费观看中文| 精品国偷自产在线视频99| 色综合天天综合网国产成人网| 91精品国产色综合| 色777狠狠综合秋免鲁丝| 国产日韩精品视频| 亚洲精品美女视频| 欧美大片在线看| 亚洲国产精品久久| 欧美成人午夜剧场免费观看| 欧美视频不卡中文| 色噜噜狠狠狠综合曰曰曰| 中文字幕精品在线| 久久久久久91香蕉国产| 日韩电影大片中文字幕| 91久久久亚洲精品| 国产z一区二区三区| 亚洲精品福利免费在线观看| 国产精品久久av| …久久精品99久久香蕉国产| 欧美电影电视剧在线观看| 国产精品久久久久久久久久久久| 亚洲最新视频在线| 欧美日韩一二三四五区| 国产va免费精品高清在线| 中文国产成人精品久久一| 欧美疯狂做受xxxx高潮|