我正在编写一些代码,在运行时可以在项目路径中创建或删除目录。我还没有真正使用ruby进行文件处理,所以我真的很不安,因为代码可能会在几个星期内出现错误的类型,从而导致清除项目路径之外的其他目录。
不管在破坏性调用中键入什么,程序是否仍然无法删除自己路径以外的文件?

最佳答案

pathname是几乎所有文件操作的包装类。

require "pathname"
path= Pathname.new("/home/johannes")
path.directory? # => true
path.children # => [#<Pathname:.bash_history>, #<Pathname:Documents>, #<Pathname:Desktop>]
path.children.each do |p|
  p.delete if p.file?
end

Pathname#children不包含...,因此您不会意外地沿着树向上走而不是向下走。如果您仍然不信任代码,甚至可以检查on path是否包含在另一个
Pathname.new("test") <=> Pathname.new("test/123") # => -1

关于ruby - Ruby-在代码中使用删除文件和目录命令时如何防止删除硬盘,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2085576/

10-14 01:34