指定したパスのファイルやディレクトリが存在するかどうかを調べるには、File.exist?(path) メソッドを使用します。
if File.exist?('sample')
puts 'sample が見つかりました'
end
ディレクトリの確認もまったく同様ですが、File.exist?
では、ファイルとディレクトリの区別ができないことに注意してください。
sample
というファイルがある場合も、sample
というディレクトリがある場合も、File.exist?('sample')
は true
を返します。
File.exist?
はファイルとディレクトリを区別せずに、指定したパスにファイルかディレクトリが存在しているかを調べるメソッドでした。
ファイルとディレクトリをちゃんと区別して、ファイルの有無やディレクトリの有無をチェックするには、File.file?(path) や File.directory?(あるいは Dir.exist?(path))を使用します。
File.file?('/bin/bash') # => true
File.file?('/bin') # => false
File.file?('/no_such_file') # => false
File.directory?('.') #=> true
File.directory?('/etc') #=> true
File.directory?('/etc/passwd') #=> false
ファイルやディレクトリの有無を確認するときのパスには、相対パスや絶対パスを指定することができますが、下記のようにホームディレクトリを示す ~
を含める場合は、あらかじめ File.expand_path
でパスを展開しておく必要があります。
if Dir.exist?(File.expand_path('~/temp'))
puts 'ホームディレクトリに temp ディレクトリが見つかりました'
end