(转)在lua中递归删除一个文件夹

原文地址:http://www.cocoachina.com/bbs/read.php?tid=212786

纯lua
纯 lua 其实是个噱头。这里还是要依赖 lfs(lua file sytem),好在 quick-cocos2d-x 已经包含了这个库。
lfs.rmdir 命令 和 os.remove 命令一样,只能删除空文件夹。因此实现类似 rm -rf 的功能, 必须要递归删除文件夹中所有的文件和子文件夹。
让我们扩展一下 os 包。

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

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

原文地址:https://www.cnblogs.com/wodehao0808/p/9104978.html

时间: 2024-10-09 05:44:26

(转)在lua中递归删除一个文件夹的相关文章

Linux递归解压缩一个文件夹下的所有文件

gunzip -r hongchangfirst/data 如何递归删除那些剩余的非log结尾的文件? 先列出确认一下: find hongchangfirst/data -type f ! -name "*.log" 然后真正的删除: find hongchangfirst/data -type f ! -name "*.log" -exec rm -f {} \; 记住后边-exec一定要加空格,否则会出现find: missing argument to `-

JAVA利用递归的方法删除一个文件夹以及文件夹下所有的子文件

public static boolean deleteFolder(String url) { File file = new File(url); if (!file.exists()) { return false; } if (file.isFile()) { file.delete(); return true; } else { File[] files = file.listFiles(); for (int i = 0; i < files.length; i++) { Stri

windows使用cmd快速删除一个文件夹

node_modules一般有很多碎文件,删除的时候很慢,在linux下可以使用rm -rf node_modules来快速删除文件夹,在windows也有类似命令. 在你的项目目录下打开cmd ,使用rmdir node_modules /S /Q可以快速删除 从长远来看,买个mac才是王道,windows果然很操蛋... 原文地址:https://www.cnblogs.com/yesyes/p/8229120.html

递归求一个文件夹的大小

建立一个任意路径的对象求取该路径下文件夹的大小:public class Test { public static void main(String[] args) throws IOException {//创建文件对象 File file = new File("D:\\JavaSE"); System.out.println(method(file)); }//写方法求文件大小 public static long method(File file) { long line =

递归求一个文件夹大小(二)

public class Test1 { public static void main(String[] args) { // 统计文件夹大小 long len = getDirLength(new File("D:\\JavaSE")); System.out.println(len + "字节"); } // 返回值long类型,参数列表:File dir public static long getDirLength(File dir) { // 定义统计变

C# 列出并删除一个文件夹下的所有MD5值相同的文件

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApplication7 { class Program { public static Dictionary<string, List<string>> dic = new Dicti

Android MediaProvider--文件管理:必现,文件管理器中新建几个文件夹,批量删除后,连接电脑查看仍有部分文件夹未删除

问题描述: [测试步骤]:1.进入文件管理器中,新建几个文件夹,然后批量全选这些文件夹--删除: 2.手机连接电脑,在电脑端查看文件显示. [测试结果]:电脑端查看仍有部分文件夹未删除.插拔USB线几次,在电脑端重新查看,仍显示. [预期结果]:电脑端不应显示已删除的文件夹. [复现概率]:100%(若第一次未复现,步骤1.2重新操作即可复现) [备注]:在文件管理中点击"搜索",也能搜索出这些文件夹. 按以下步骤更容易复现 1.添加一个本地文件夹,删除新添加的文件夹 2.再新建另一文

linux下删除整个文件夹或者文件命令实例

1.linux删除文件夹命令 在用Linux的时候,有时候要删除一个文件夹,往往会提示次此文件非空,没法删除,这个时候,就必须使用rm -rf命令. 2.linux删除文件夹实例: rm -rf /var/log/httpd/access 将会删除/var/log/httpd/access目录以及其下所有文件.文件夹 3.linux删除文件实例: rm -f /var/log/httpd/access.log 将会强制删除/var/log/httpd/access.log这个文件 -r 就是向下

选择一个文件夹 - Delphi

在Delphi中,选择一个文件夹的操作主要有两种方法.一种是通过"打开"对话框(OpenDialog)控件,通过定位一个文件来间接实现.另一种是利用Delphi提供的SelectDirectory函数.这个函数是在FileCtrl单元中定义的. 第二种方法还有一个附加的好处,它可以使用Root参数限定根目录的位置,并且不能再向上返回. 示例代码如下: uses FileCtrl; procedure TForm1.Button3Click(Sender: TObject); var s