尝试删除目录(+内容)并在读取内部文件后,FileUtils.rm_rf(path)
不会删除所有文件夹,但会删除所有文件和部分文件夹。
经过一些实验,它似乎与File.open块有关。 (我实际上在块中进行了正则表达式匹配,但我只是在这里使用put来保持清晰)
File.open(file).each do |line|
puts line
end
从我读过的内容来看,上面应该自动关闭文件,但是在使用它时,FileUtils无法完成任务。
但是,如果我使用以下代码,FileUtils将按需运行。
open_file = File.open(file)
open_file.each do |line|
puts line
end
open_file.close
在第二个例子中使用代码没什么大不了的,但我更喜欢第一个代码的清洁度。
第一个示例是否有任何理由破坏FileUtils?
P.S。我是Ruby和Stack Overflow的新手......嗨。我的系统是Ubuntu 11.04(64位),使用Ruby 1.9.2-p180运行RVM
答案 0 :(得分:1)
你应该使用这样的东西:
File.open(file) do |f|
f.each{|line| puts line}
end
在您的示例中,块被提供给每个方法,并且执行open而不是块的版本,返回调用每个方法的IO对象。