如何删除不为空的整个目录?

Chen Yu

我想清理临时资源。file模块只有del_dir / 1,要求目录为空。但是没有获取目录中所有文件的功能(带有绝对路径”)

源代码如下,该如何纠正?

 delete_path(X)->
    {ok,List} = file:list_dir_all(X), %% <--- return value has no absolute path here
    lager:debug("_229:~n\t~p",[List]),
    lists:map(fun(X)->
                      lager:debug("_231:~n\t~p",[X]),
                        ok = file:delete(X)
                end,List),
    ok = file:del_dir(X),
    ok.
丹尼尔·奥尼琴科(Danil Onishchenko)

您可以使用os:cmd通过控制台命令删除目录,尽管这是一种粗略的方法。对于类似Unix的操作系统,它将是:

os:cmd("rm -Rf " ++ DirPath).

如果要使用适当的erlang函数删除非空目录,则必须递归执行。从下面的例子在这里展示了如何做到这一点:

-module(directory).
-export([del_dir/1]).

del_dir(Dir) ->
   lists:foreach(fun(D) ->
                    ok = file:del_dir(D)
                 end, del_all_files([Dir], [])).

del_all_files([], EmptyDirs) ->
   EmptyDirs;
del_all_files([Dir | T], EmptyDirs) ->
   {ok, FilesInDir} = file:list_dir(Dir),
   {Files, Dirs} = lists:foldl(fun(F, {Fs, Ds}) ->
                                  Path = Dir ++ "/" ++ F,
                                  case filelib:is_dir(Path) of
                                     true ->
                                          {Fs, [Path | Ds]};
                                     false ->
                                          {[Path | Fs], Ds}
                                  end
                               end, {[],[]}, FilesInDir),
   lists:foreach(fun(F) ->
                         ok = file:delete(F)
                 end, Files),
   del_all_files(T ++ Dirs, [Dir | EmptyDirs]).

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

mv:无法删除目录:目录不为空

来自分类Dev

删除目录时出错:目录不为空

来自分类Dev

无法删除项目。目录不为空

来自分类Dev

shell查找-删除“目录不为空”

来自分类Dev

删除文件和目录(即使不为空),但某些目录除外

来自分类Dev

“无法删除'some_directory':目录不为空”

来自分类Dev

mv:目录不为空

来自分类Dev

mv:目录不为空

来自分类Dev

mv:“目录不为空”-如何将目录与`mv`合并?

来自分类Dev

如果给定目录不为空,如何执行Ansible任务?

来自分类Dev

Cobian / Filezilla-FTP-无法删除目录:目录不为空(点[文件名]错误)

来自分类Dev

尝试删除空目录时,为什么会出现“目录不为空”的提示?

来自分类Dev

无法移动目录不为空

来自分类Dev

创建.deb之后:删除时警告dpkg :,目录/ usr / local / bin不为空,因此未删除

来自分类Dev

创建.deb之后:删除时警告dpkg :,目录/ usr / local / bin不为空,因此未删除

来自分类Dev

如何删除Zookeeper中不为空的数据节点?

来自分类Dev

从Jtable删除不为空的记录

来自分类Dev

查找:禁止显示“目录不为空”

来自分类Dev

即使目录不为空,此路径也会跳过空目录

来自分类Dev

如何使整个目录可执行?

来自分类Dev

如何使整个目录可执行?

来自分类Dev

如何备份网站的整个目录?

来自分类Dev

如何从Dropbox下载整个目录?

来自分类Dev

如何压缩整个目录的内容?

来自分类Dev

为什么我用“ rm -rf”得到“目录不为空”?

来自分类Dev

Haskell 捕获目录不存在但不为空值

来自分类Dev

Git-如何将整个目录还原为特定的提交(删除所有添加的文件)

来自分类Dev

如何递归删除包含其他进程使用的文件的整个目录?

来自分类Dev

如何检查数组的哪些字段不为空

Related 相关文章

  1. 1

    mv:无法删除目录:目录不为空

  2. 2

    删除目录时出错:目录不为空

  3. 3

    无法删除项目。目录不为空

  4. 4

    shell查找-删除“目录不为空”

  5. 5

    删除文件和目录(即使不为空),但某些目录除外

  6. 6

    “无法删除'some_directory':目录不为空”

  7. 7

    mv:目录不为空

  8. 8

    mv:目录不为空

  9. 9

    mv:“目录不为空”-如何将目录与`mv`合并?

  10. 10

    如果给定目录不为空,如何执行Ansible任务?

  11. 11

    Cobian / Filezilla-FTP-无法删除目录:目录不为空(点[文件名]错误)

  12. 12

    尝试删除空目录时,为什么会出现“目录不为空”的提示?

  13. 13

    无法移动目录不为空

  14. 14

    创建.deb之后:删除时警告dpkg :,目录/ usr / local / bin不为空,因此未删除

  15. 15

    创建.deb之后:删除时警告dpkg :,目录/ usr / local / bin不为空,因此未删除

  16. 16

    如何删除Zookeeper中不为空的数据节点?

  17. 17

    从Jtable删除不为空的记录

  18. 18

    查找:禁止显示“目录不为空”

  19. 19

    即使目录不为空,此路径也会跳过空目录

  20. 20

    如何使整个目录可执行?

  21. 21

    如何使整个目录可执行?

  22. 22

    如何备份网站的整个目录?

  23. 23

    如何从Dropbox下载整个目录?

  24. 24

    如何压缩整个目录的内容?

  25. 25

    为什么我用“ rm -rf”得到“目录不为空”?

  26. 26

    Haskell 捕获目录不存在但不为空值

  27. 27

    Git-如何将整个目录还原为特定的提交(删除所有添加的文件)

  28. 28

    如何递归删除包含其他进程使用的文件的整个目录?

  29. 29

    如何检查数组的哪些字段不为空

热门标签

归档