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

首頁 > 開發 > 綜合 > 正文

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

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

 

復制代碼 代碼如下:

rmdir in quick-cocos2d-x with lua.

在使用 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
国外成人在线直播| 成人网在线观看| 日韩在线视频观看| 国产精品伦子伦免费视频| 狠狠久久亚洲欧美专区| 久久久伊人日本| 亚洲国产精品电影在线观看| 日韩天堂在线视频| 日韩久久免费视频| 亚洲国产日韩欧美在线99| 欧美性极品少妇精品网站| 91欧美视频网站| 黑人巨大精品欧美一区二区| 久久久久久久久国产精品| 成人精品视频在线| 亚洲精品一区久久久久久| 中文字幕日韩精品有码视频| 九九热视频这里只有精品| 激情成人在线视频| 性欧美视频videos6一9| 日本亚洲欧洲色α| 中文字幕久久久av一区| 欧美亚洲成人免费| 68精品国产免费久久久久久婷婷| 午夜精品久久久久久久男人的天堂| 亚洲精品黄网在线观看| 久久久久女教师免费一区| 亚洲人成在线电影| 亚洲性日韩精品一区二区| 欧美高清不卡在线| 日本一区二三区好的精华液| 亚洲精品v天堂中文字幕| 岛国av午夜精品| …久久精品99久久香蕉国产| 欧美色欧美亚洲高清在线视频| 国产日本欧美一区二区三区在线| 日本人成精品视频在线| 精品国产一区久久久| 国语自产精品视频在免费| 国产精品福利在线| www国产亚洲精品久久网站| 国产91av在线| 国产日韩欧美日韩大片| 国产主播喷水一区二区| 亚洲福利视频久久| 亚洲国产精品系列| 97成人超碰免| 午夜精品免费视频| 欧美在线激情网| 亚洲精品日产aⅴ| 欧美另类交人妖| 欧美亚洲国产精品| 精品亚洲国产成av人片传媒| 久久久久久久久久久亚洲| 韩国一区二区电影| 69国产精品成人在线播放| 中文字幕亚洲欧美日韩高清| 中文字幕在线日韩| 久热爱精品视频线路一| 亚洲天堂av在线播放| 麻豆国产精品va在线观看不卡| 亚洲国产精品va在线看黑人动漫| 日韩专区中文字幕| 日韩中文字幕在线视频| 久久婷婷国产麻豆91天堂| 国产成人在线视频| 国产精品视频公开费视频| 伦理中文字幕亚洲| 亚洲人成网站在线播| 亚洲毛片在线观看| 亚洲国内高清视频| 91精品国产乱码久久久久久久久| 欧美成人四级hd版| 国产精品综合久久久| 精品精品国产国产自在线| 久久精品电影网站| www.99久久热国产日韩欧美.com| 欧美激情网站在线观看| 亚洲一区二区三| 亚洲电影免费观看高清完整版在线观看| 亚洲精品av在线播放| 日韩专区中文字幕| 亚洲精品aⅴ中文字幕乱码| 欧美激情视频播放| 伊人久久免费视频| 欧美日韩一区二区免费在线观看| 国产精品青草久久久久福利99| 日韩av一区二区在线观看| 欧洲美女7788成人免费视频| 成人在线播放av| 欧美午夜精品久久久久久人妖| 国产精品久久久久不卡| 亚洲少妇中文在线| 亚洲欧美日韩精品久久奇米色影视| 国产精品黄色影片导航在线观看| 日韩精品在线视频观看| 成人免费网站在线看| 狠狠色狠狠色综合日日小说| 91超碰caoporn97人人| 久久久久久久久国产| 欧美日韩国产在线| 亚洲免费伊人电影在线观看av| 亚洲精品日韩欧美| 亚洲国产精品人久久电影| 亚洲曰本av电影| 亚洲图片欧洲图片av| 国产一区二区精品丝袜| 亚洲伊人第一页| 色综合伊人色综合网站| 日韩在线视频国产| 91在线|亚洲| 国内自拍欧美激情| 欧美日韩裸体免费视频| 亚洲在线视频福利| 国产精品欧美亚洲777777| 日韩欧美精品网址| 国产成人在线亚洲欧美| 一本大道久久加勒比香蕉| 国产欧美一区二区三区四区| 国产精品欧美一区二区三区奶水| 国产精品久久一区| 亚洲成人免费网站| 色一情一乱一区二区| 欧美亚洲成人免费| 国内精品中文字幕| 欧美夫妻性生活视频| 中文字幕精品久久久久| 不卡av电影在线观看| 欧美精品中文字幕一区| 国产精品手机播放| 日韩视频中文字幕| 日韩视频免费大全中文字幕| 日本成人免费在线| 美女国内精品自产拍在线播放| 亚洲性av网站| 亚洲香蕉成视频在线观看| 欧美性猛交xxxx富婆弯腰| 福利二区91精品bt7086| 亚洲人成网7777777国产| 亚洲影视九九影院在线观看| 国产精品一区二区久久国产| 欧美大片在线免费观看| 国产97在线播放| 91tv亚洲精品香蕉国产一区7ujn| 在线一区二区日韩| 欧美国产乱视频| 国产精品黄色影片导航在线观看| 久久夜色精品国产欧美乱| 精品福利免费观看| 国语自产精品视频在免费| 黑人欧美xxxx| 亚洲美女精品成人在线视频| 欧美国产激情18| 欧美老肥婆性猛交视频| 岛国视频午夜一区免费在线观看| 亚洲欧美日韩国产精品| 亚洲精品理论电影| 国产精品亚发布| 国产精品色视频| 欧美大胆在线视频| 欧洲日韩成人av| 久久综合久中文字幕青草| 欧美与欧洲交xxxx免费观看| 一区二区三区黄色|