如何使用Dir类删除非空目录?

Dhi*_*esh 26 ruby

Dir.delete("/usr/local/var/lib/trisul/CONTEXT0/meters/oper/SLICE.9stMxh")  
Run Code Online (Sandbox Code Playgroud)

导致此错误:

目录不空 - /usr/local/var/lib/trisul/CONTEXT0/meters/oper/SLICE.9stMxh

即使目录仍包含文件,如何删除目录?

J-_*_*_-L 52

是不可能的Dir(除了自己迭代目录或使用Dir.glob并删除所有内容).

你应该用

require 'fileutils'
FileUtils.rm_r "/usr/local/var/lib/trisul/CONTEXT0/meters/oper/SLICE.9stMxh"
Run Code Online (Sandbox Code Playgroud)


Hit*_*esh 7

当您删除目录时Dir.delete,它还会在子目录中搜索文件.

Dir.delete("/usr/local/var/lib/trisul/CONTEXT0/meters/oper/SLICE.9stMxh")
Run Code Online (Sandbox Code Playgroud)

如果目录不为空,则会引发Directory not empty错误.对于那个ruby有FiltUtils.rm_r方法,无论如何都会删除目录!

require 'fileutils'
FileUtils.rm_r "/usr/local/var/lib/trisul/CONTEXT0/meters/oper/SLICE.9stMxh"
Run Code Online (Sandbox Code Playgroud)

  • 甚至FileUtils.rm_r路径也给Directory不为空@dir_s_rmdir错误. (2认同)