ディレクトリ/ファイルの操作
- 新しいディレクトリを作成する。
- ディレクトリの作成に成功すると
0
を返し、失敗すると例外が発生する。
# 作成成功
Dir.mkdir("sample") # => 0
Dir.mkdir("sample")
# => Errno::EEXIST (File exists @ dir_s_mkdir - sample)
- 空のディレクトリを削除する。
- ディレクトリの削除に成功すると
0
を返し、失敗すると例外が発生する。
- 以下の別名メソッドがある。
# 削除成功
Dir.delete("sample") # => 0
Dir.rmdir("sample") # => 0
# 削除失敗(ディレクトリが空でない時)
Dir.delete("sample")
# => Errno::ENOTEMPTY (Directory not empty @ dir_s_rmdir - sample)
Dir.rmdir("sample")
# => Errno::ENOTEMPTY (Directory not empty @ dir_s_rmdir - sample)
- カレントディレクトリのフルパスを文字列で返す。
Dir.pwd
は別名メソッド
Dir.getwd # => "/Users/user/RubyExamination"
Dir.pwd # => "/Users/user/RubyExamination"
- 現在のユーザまたは指定されたユーザのホームディレクトリを返す。
Dir.home # => "/home/vagrant"
Dir.home("root") # => "/root"
- カレントディレクトリを変更する。
- ブロックが指定された場合は、ブロックの実行中のみカレントディレクトリを変更する。
Dir.chdir("/var/spool/mail")
p Dir.pwd # => "/var/spool/mail"
Dir.chdir("/tmp") do
p Dir.pwd # => "/tmp"
end
p Dir.pwd # => "/var/spool/mail"
- 指定したディレクトリに含まれるファイルエントリ名のうち、
"."
と ".."
をのぞいた配列を返す。
Dir.children('.') # => ["bar", "foo"]
- 指定したディレクトリが空の場合に真を返す。ディレクトリでない場合や空でない場合に偽を返す。
Dir.empty?('.') # => false
Dir.empty?(IO::NULL) # => false
- 指定したディレクトリが存在する場合に真を返す。そうでない場合は、偽を返す。
Dir.exist?(".") # => true
File.directory?(".") # => true
- 指定されたファイルをオープンし、
File
オブジェクトを生成する。デフォルトは読み込みモード(r
)で開く。
File.open
は別名メソッド
f = File.new("testfile", "r")
f.class # => File
f.close
- 指定したファイルを削除する。
- 削除に成功した場合は削除したファイルの数を返し、削除に失敗した場合は例外が発生する。
File.unlink
は別名メソッド
# 削除成功
File.delete("text_1.txt", "text2.txt") # => 2
# 削除失敗
File.delete("text_1.txt")
# => Errno::ENOENT: No such file or directory @ unlink_internal - text_1.txt
- 指定した文字列の一番後ろの
/
に続く文字列を返す。
- 引数
suffix
が与えられて、かつそれが文字列の末尾に一致するなら、それを取り除いたものを返す。
File.basename("ruby/ruby.c") # => "ruby.c"
File.basename("ruby/ruby.c", ".c") # => "ruby"
File.basename("ruby/ruby.c", ".*") # => "ruby"
File.basename("ruby/ruby.exe", ".*") # => "ruby"
File.basename("ruby/y.tab.c", ".*") # => "y.tab"
- 指定した文字列の一番後ろの
/
より前の文字列を返す。/
を含まない場合は .
を返す。
File.dirname("text.txt") # => "."
File.dirname("REx/text.txt") # => "REx"
File.dirname("Desktop/REx/text.txt") # => "Desktop/REx"
File.chmod(0644, "text.txt")
# => text.txtファイルのモードを「所有者は読み書き可能で実行不可能」「所有グループとその他は読み込みのみ可能で書き込みと実行は不可能」に変更
- 指定したファイルのオーナーとグループを変更する。変更したファイルの数を返す。
- スーパーユーザだけがファイルのオーナーとグループを変更できる。
File.chown(502, 12, "test.txt") # => 1
File.stat("test.txt").uid # => 502
- ファイルがディレクトリの時に真を返す。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには偽を返す。
Dir.exist?(".") # => true
File.directory?(".") # => true
- ファイルが通常ファイルの時に真を返す。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには偽を返す。
FileTest.file?('/bin/bash') # => true
FileTest.file?('/bin') # => false
FileTest.file?('/no_such_file') # => false
- ファイルが存在して、そのサイズが 0 である時に真を返す。そうでない場合、あるいはシステムコールに失敗した場合には偽を返す。
IO.write("zero.txt", "")
Fle.zero?("zero.txt") # => true
IO.write("nonzero.txt", "1")
File.zero?("nonzero.txt") # => false