我想在Ruby中删除一个非空目录,不管我以哪种方式去做它都拒绝工作。 我一直在使用文件实用程序,系统调用,递归进入指定的目录,并删除一切,但似乎总是与落得(临时?)文件试图如Ruby删除目录
.__ afsECFC
.__ afs73B9
任何人都知道为什么会发生这种情况,我如何能够绕过它?
我想在Ruby中删除一个非空目录,不管我以哪种方式去做它都拒绝工作。 我一直在使用文件实用程序,系统调用,递归进入指定的目录,并删除一切,但似乎总是与落得(临时?)文件试图如Ruby删除目录
.__ afsECFC
.__ afs73B9
任何人都知道为什么会发生这种情况,我如何能够绕过它?
实现了我的错误,一些文件还没有关闭。 我刚才在我的节目,我是用
File.open(filename).read
,我换了一个
f = File.open(filename, "r")
while line = f.gets
puts line
end
f.close
现在
FileUtils.rm_rf(dirname)
完美的作品
如果您只是阅读完整文件,则可以执行File.read文件名'(至少在MRI中,我不认为JRuby或Rubinius支持这一点),如果你想按照你展示的方式来做,最好使用块形式,因为它确保文件被关闭: 'File.open(filename,“r”){| file | ...}或File.foreach(filename){| line | ...} –
我想最好的方法,以消除所有内容的目录“不使用aditional的LIB”使用简单的递归方法:
def remove_dir(path)
if File.directory?(path)
Dir.foreach(path) do |file|
if ((file.to_s != ".") and (file.to_s != ".."))
remove_dir("#{path}/#{file}")
end
end
Dir.delete(path)
else
File.delete(path)
end
end
remove_dir(path)
你能告诉我们你如何你调用什么方法,你如何叫它?我之所以问,是因为@ismaelga的答案对我来说也很好。 –
我试过使用 'FileUtils.rm_rf('directorypath/name')' as @ismealga建议,以及 ''rm -rf @ {path}'' 但是由于我没有正确关闭我的文件,他们正在创建那些临时的 – Ced