次のコードを使用してディレクトリを作成しようとしています:
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
が、誰にもわかりません)。