我正在尝试使用以下代码创建一个目录:
Dir.mkdir("/Users/Luigi/Desktop/Survey_Final/Archived/Survey/test")
unless File.exists?("/Users/Luigi/Desktop/Survey_Final/Archived/Survey/test")
但是,我收到此错误:
No such file or directory - /Users/Luigi/Desktop/Survey_Final/Archived/Survey/test (Errno::ENOENT)
为什么上面的Dir.mkdir
语句没有创建这个目录?
最佳答案
您可能正在尝试创建嵌套目录。假设 foo
不存在,您将收到 no such file or directory
错误:
Dir.mkdir 'foo/bar'
# => Errno::ENOENT: No such file or directory - 'foo/bar'
要一次创建嵌套目录,需要FileUtils
:
require 'fileutils'
FileUtils.mkdir_p 'foo/bar'
# => ["foo/bar"]
Edit2:你不必使用FileUtils
,你可以做系统调用(来自@mu的更新评论太短):
> system 'mkdir', '-p', 'foo/bar' # worse version: system 'mkdir -p "foo/bar"'
=> true
但这似乎(至少对我而言)是更糟糕的方法,因为您正在使用外部“工具”,这在某些系统上可能不可用(尽管我很难想象没有 mkdir
的系统,但谁知道呢).
关于ruby - 如果 Ruby 不存在则创建目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19280341/