我想删除一个可能包含或不包含文件或其他目录的目录。查看Ruby文档,我发现Dir.rmdir但它不会删除非空目录。是否有一种方便的方法让我这样做?或者我是否需要编写递归方法来检查目录下的所有内容?
答案 0 :(得分:49)
require 'fileutils'
FileUtils.rm_rf(dir)
答案 1 :(得分:4)
纯粹的Ruby方式:
要求'fileutils'
FileUtils.rm_rf( “/目录/到/去”)
如果您需要线程安全:(警告,更改工作目录)
FileUtils.rm_rf(“directory / to / go”,:secure => true)
答案 2 :(得分:0)
如果有人在@ferventcoder评论上寻找答案-
仅需注意一下,我发现在Windows和Ruby 1.9.3(至少)下,FileUtils.rm_rf将跟随链接(在这种情况下为符号链接),并删除这些文件和文件夹。通过使用CreateSymbolicLinkW创建符号链接,然后对符号链接所在的父目录运行FileUtils.rm_rf来发现此错误。
– ferventcoder
最安全的方法是迭代路径并手动将其删除。
def rec_del(路径):
答案 3 :(得分:-3)
最懒的方式是:
def delete_all(path)
`rm -rf "#{path}"`
end