如何在ruby中递归创建目录?

Jan*_*Jan 97 ruby

我想将文件存储为/a/b/c/d.txt,但我不知道是否存在任何这些目录,并且如果需要,需要以递归方式创建它们.怎么能用红宝石做到这一点?

Har*_*ood 185

用途mkdir_p:

FileUtils.mkdir_p '/a/b/c'
Run Code Online (Sandbox Code Playgroud)

_p是父/路径的unix保留,mkpath如果对你更有意义,你也可以使用别名.

FileUtils.mkpath '/a/b/c'
Run Code Online (Sandbox Code Playgroud)

在Ruby 1.9中,FileUtils已从核心中删除,因此您必须这样做require 'fileutils'.

  • +1.`FileUtils`和`Pathname`可能是*最重要的Ruby shell脚本工具. (9认同)

fer*_*ass 19

用户mkdir_p以递归方式创建目录

path = "/tmp/a/b/c"

FileUtils.mkdir_p(path) unless File.exists?(path)
Run Code Online (Sandbox Code Playgroud)


Mat*_*kel 5

如果你在unixy机器上运行,不要忘记你总是可以通过将它放在反引号中来在ruby下运行shell命令.

`mkdir -p /a/b/c`
Run Code Online (Sandbox Code Playgroud)

  • 将系统命令弹出到子进程中并不是最好的主意。最好使用 Ruby 标准库来进行错误处理、检查结果等。 (2认同)

Vad*_*rov 5

路径名来救援!

Pathname('/a/b/c/d.txt').dirname.mkpath
Run Code Online (Sandbox Code Playgroud)