在纯Ruby中删除目录中所有文件的安全有效方法是什么?我写
Dir.foreach(dir_path) {|f| File.delete(f) if f != '.' && f != '..'}
Run Code Online (Sandbox Code Playgroud)
但它给了我一个No such file or directory
错误.
谢谢.
Mar*_*her 69
怎么样FileUtils.rm_rf("#{dir_path}/.", secure: true)
?
Myr*_*avN 22
FileUtils.rm_rf Dir.glob("#{dir_path}/*") if dir_path.present?
Run Code Online (Sandbox Code Playgroud)
sar*_*old 13
您可能会收到该错误,因为您当前的工作目录不匹配dir_path
- File.delete(f)
正在给出文件的文件名dir_path
.(我希望你当前工作目录中没有任何重要文件,目录中的名称相同dir_path
.)
您需要使用File.join(dir_path, f)
构造要删除的文件名.您还需要弄清楚如何处理目录:
Dir.foreach(dir_path) do |f|
fn = File.join(dir_path, f)
File.delete(fn) if f != '.' && f != '..'
end
Errno::EISDIR: Is a directory - /tmp/testing/blubber
from (irb):10:in `delete'
from (irb):10
from (irb):10:in `foreach'
from (irb):10
from :0
Run Code Online (Sandbox Code Playgroud)
每个人都建议rm_rf
,但更安全的方法是使用rm_f
,这是一个别名rm force: true
.
FileUtils.rm_f Dir.glob("#{dir_path}/*")
Run Code Online (Sandbox Code Playgroud)
此方法不会删除目录,它只会删除文件:http://ruby-doc.org/stdlib-2.2.0/libdoc/fileutils/rdoc/FileUtils.html#method-c-rm
归档时间: |
|
查看次数: |
26413 次 |
最近记录: |