ruby - 如果 Ruby 不存在则创建目录

标签 ruby

我正在尝试使用以下代码创建一个目录:

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/

相关文章:

ruby - 仅在输入值时验证 Rails3 模型

ruby-on-rails - 在生产环境中运行 'rails server'

ruby-on-rails - Ruby - 数组 A 是否包含数组 B 的所有元素

ruby - Ruby 数组中的基本方向

ruby - 为什么需要 mongo 给我 LoadError : no such file to load -- openssl

ruby - Rails,如何迁移大量数据?

ruby - 为 Ruby 安装 Sqlite3 (Mac OSX 10.5.8)

ruby - 您如何访问 VCR 盒式磁带中的数据进行测试?

html - 如何在用户第一次访问页面时选中所有复选框?

ruby - 有没有办法查看项目中所有 gem 的文档?