1. ホーム
  2. ruby

[解決済み] Rubyでディレクトリを作成する

2022-04-22 12:47:11

質問

以下のコードでディレクトリを作成しようとしています。

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 という文があります。

どのように解決するのですか?

おそらく、ネストしたディレクトリを作成しようとしているのでしょう。仮に 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 しかし、それは誰にもわからないことです。)