Rubyでディレクトリが存在しない場合は作成する 質問する

Rubyでディレクトリが存在しない場合は作成する 質問する

次のコードを使用してディレクトリを作成しようとしています:

Dir.mkdir("/Users/Luigi/Desktop/Survey_Final/Archived/Survey/test")
    unless File.exists?("/Users/Luigi/Desktop/Survey_Final/Archived/Survey/test")  

ただし、次のエラーが表示されます:

そのようなファイルまたはディレクトリはありません - /Users/Luigi/Desktop/Survey_Final/Archived/Survey/test (Errno::ENOENT)

上記のステートメントによってこのディレクトリが作成されないのはなぜですかDir.mkdir?

ベストアンサー1

おそらくネストされたディレクトリを作成しようとしているのでしょう。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"]

編集2: を使用する必要はなくFileUtils、システム コールを行うことができます (@mu からの更新はコメントが短すぎます):

> system 'mkdir', '-p', 'foo/bar' # worse version: system 'mkdir -p "foo/bar"'
=> true

しかし、それは(少なくとも私にとっては)一部のシステムでは利用できない可能性のある外部「ツール」を使用しているため、より悪いアプローチのように思えます(ただし、それがないシステムを想像することはほとんどできませんmkdirが、誰にもわかりません)。

おすすめ記事