要約
ファイルの検査関数を集めたモジュールです。
注意
FileTest で定義された各メソッドは、システムコールに失敗しても例外を発生させません。真を返した時のみ、返り値は意味をもちます。例えば、
File.exist?('/root/.bashrc')
が false を返しても、それはファイルが存在しないことを保証しません。
目次
- モジュール関数
モジュール関数
blockdev?(file) -> bool
[permalink][rdoc][edit]-
ファイルがブロックスペシャルファイルである時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
- [EXCEPTION] IOError:
- 指定された IO オブジェクト file が既に close されていた場合に発生します。
例:
Dir.glob("/dev/*") { |file| puts file if FileTest.blockdev?(file) } # /dev/disk0 # /dev/disk0s3 # ...
chardev?(file) -> bool
[permalink][rdoc][edit]-
ファイルがキャラクタスペシャルファイルの時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
- [EXCEPTION] IOError:
- 指定された IO オブジェクト file が既に close されていた場合に発生します。
例:
Dir.glob("/dev/*") { |file| puts file if FileTest.chardev?(file) } # /dev/console # /dev/tty # ...
directory?(file) -> bool
[permalink][rdoc][edit]-
ファイルがディレクトリの時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
- [EXCEPTION] IOError:
- 指定された IO オブジェクト file が既に close されていた場合に発生します。
例:
FileTest.directory?('/etc') # => true FileTest.directory?('/etc/passwd') # => false f = File.open('/etc') FileTest.directory?(f) # => true f.close FileTest.directory?(f) # => IOError: closed stream
zero?(file) -> bool
[permalink][rdoc][edit]empty?(file) -> bool
-
ファイルが存在して、そのサイズが 0 である時に真を返します。そうでない場合、あるいはシステムコールに失敗した場合には false を返します。
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
- [EXCEPTION] IOError:
- 指定された IO オブジェクト file が既に close されていた場合に発生します。
IO.write("zero.txt", "") FileTest.zero?("zero.txt") # => true IO.write("nonzero.txt", "1") FileTest.zero?("nonzero.txt") # => false
[SEE_ALSO] FileTest.#size, FileTest.#size?
executable?(file) -> bool
[permalink][rdoc][edit]-
ファイルがカレントプロセスにより実行できる時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。
- [PARAM] file:
- ファイル名を表す文字列を指定します。
例:
FileTest.executable?('/bin') # => true FileTest.executable?('/bin/bash') # => true
executable_real?(file) -> bool
[permalink][rdoc][edit]-
ファイルがカレントプロセスの実ユーザか実グループで実行できる時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。
- [PARAM] file:
- ファイル名を表す文字列を指定します。
IO.write("empty.txt", "") File.chmod(0744, "empty.txt") FileTest.executable_real?("empty.txt") # => true File.chmod(0644, "empty.txt") FileTest.executable_real?("empty.txt") # => false
exist?(file) -> bool
[permalink][rdoc][edit]-
ファイルが存在する時に真を返します。そうでない場合、あるいはシステムコールに失敗した場合などには false を返します。
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
- [EXCEPTION] IOError:
- 指定された IO オブジェクト file が既に close されていた場合に発生します。
例:
FileTest.exist?('/etc/passwd') # => true FileTest.exist?('/etc') # => true FileTest.exist?('/etc/no_such_file') # => false FileTest.exist?('/etc/no_such_directory') # => false
file?(file) -> bool
[permalink][rdoc][edit]-
ファイルが通常ファイルである時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
- [EXCEPTION] IOError:
- 指定された IO オブジェクト file が既に close されていた場合に発生します。
例:
FileTest.file?('/bin/bash') # => true FileTest.file?('/bin') # => false FileTest.file?('/no_such_file') # => false
grpowned?(file) -> bool
[permalink][rdoc][edit]-
ファイルのグループ ID がカレントプロセスの実効グループ ID と等しい時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
- [EXCEPTION] IOError:
- 指定された IO オブジェクト file が既に close されていた場合に発生します。
IO.write("testfile", "") File.chown(-1, Process.gid, "testfile") FileTest.grpowned?("testfile") # => true File.chown(-1, Process.gid + 10, "testfile") FileTest.grpowned?("testfile") # => false
identical?(file1, file2) -> bool
[permalink][rdoc][edit]-
file1 と file2 が同じファイルを指している時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。
ruby 1.8.3 以前ではKernel.#test(?-, file1, file2)を使ってください。
open("a", "w") {} p File.identical?("a", "a") #=> true p File.identical?("a", "./a") #=> true File.link("a", "b") p File.identical?("a", "b") #=> true File.symlink("a", "c") p File.identical?("a", "c") #=> true open("d", "w") {} p File.identical?("a", "d") #=> false
- [PARAM] file1:
- ファイル名を表す文字列か IO オブジェクトを指定します。
- [PARAM] file2:
- ファイル名を表す文字列か IO オブジェクトを指定します。
- [EXCEPTION] IOError:
- 指定された IO オブジェクト file1, file2 が既に close されていた場合に発生します。
owned?(file) -> bool
[permalink][rdoc][edit]-
ファイルのユーザがカレントプロセスの実効ユーザと等しい時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
- [EXCEPTION] IOError:
- 指定された IO オブジェクト file が既に close されていた場合に発生します。
IO.write("testfile", "") File.chown(Process.uid, -1, "testfile") FileTest.owned?("testfile") # => true File.chown(501, -1, "testfile") FileTest.owned?("testfile") # => false
pipe?(file) -> bool
[permalink][rdoc][edit]-
指定したファイルがパイプである時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
- [EXCEPTION] IOError:
- 指定された IO オブジェクト file が既に close されていた場合に発生します。
例:
r, w = IO.pipe FileTest.pipe?(r) # => true FileTest.pipe?(w) # => true
readable?(file) -> bool
[permalink][rdoc][edit]-
ファイルがカレントプロセスにより読み込み可能な時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。
- [PARAM] file:
- ファイル名を表す文字列を指定します。
IO.write("testfile", "") File.chmod(0644, "testfile") FileTest.readable?("testfile") # => true File.chmod(0200, "testfile") FileTest.readable?("testfile") # => false
readable_real?(file) -> bool
[permalink][rdoc][edit]-
ファイルがカレントプロセスの実ユーザか実グループによって読み込み可能な時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。
- [PARAM] file:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] FileTest.#readable?
setgid?(file) -> bool
[permalink][rdoc][edit]-
ファイルが setgid(2) されている時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
require 'fileutils' IO.write("testfile", "") FileUtils.chmod("g+s", "testfile") FileTest.setgid?("testfile") # => true FileUtils.chmod("g-s", "testfile") FileTest.setgid?("testfile") # => false
setuid?(file) -> bool
[permalink][rdoc][edit]-
ファイルが setuid(2) されている時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
- [EXCEPTION] IOError:
- 指定された IO オブジェクト file が既に close されていた場合に発生します。
require 'fileutils' IO.write("testfile", "") FileUtils.chmod("u+s", "testfile") FileTest.setuid?("testfile") # => true FileUtils.chmod("u-s", "testfile") FileTest.setuid?("testfile") # => false
size(file) -> Integer
[permalink][rdoc][edit]-
ファイルのサイズを返します。
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
- [EXCEPTION] Errno::EXXX:
- file が存在しない場合、あるいはシステムコールに失敗した場合に発生します。
- [EXCEPTION] IOError:
- 指定された IO オブジェクト file が既に close されていた場合に発生します。
[SEE_ALSO] FileTest.#size?, FileTest.#zero?
例:
FileTest.size('/etc/passwd') # => 5925
size?(file) -> Integer | nil
[permalink][rdoc][edit]-
ファイルのサイズを返します。ファイルが存在しない時やファイルのサイズが0の時には nil を返します。
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
- [EXCEPTION] IOError:
- 指定された IO オブジェクト file が既に close されていた場合に発生します。
IO.write("testfile", "test") FileTest.size?("testfile") # => 4 File.delete("testfile") FileTest.size?("testfile") # => nil
[SEE_ALSO] FileTest.#size, FileTest.#zero?
socket?(file) -> bool
[permalink][rdoc][edit]-
ファイルがソケットである時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
- [EXCEPTION] IOError:
- 指定された IO オブジェクト file が既に close されていた場合に発生します。
require "socket" IO.write("testfile", "test") p FileTest.socket?("testfile") # => false Socket.unix_server_socket('testsock') { p FileTest.socket?('testsock') } # => true
sticky?(file) -> bool
[permalink][rdoc][edit]-
ファイルの sticky ビット(chmod(2) 参照)が立っている時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
require 'fileutils' IO.write("testfile", "") FileUtils.chmod("o+t", "testfile") FileTest.sticky?("testfile") # => true FileUtils.chmod("o-t", "testfile") FileTest.sticky?("testfile") # => false
symlink?(file) -> bool
[permalink][rdoc][edit]-
ファイルがシンボリックリンクである時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。
- [PARAM] file:
- ファイル名を表す文字列を指定します。
IO.write("testfile", "test") FileTest.symlink?("testfile") # => false File.symlink("testfile", "testlink") FileTest.symlink?("testlink") # => true
world_readable?(path) -> Integer | nil
[permalink][rdoc][edit]-
path が全てのユーザから読めるならばそのファイルのパーミッションを表す整数を返します。そうでない場合は nil を返します。
整数の意味はプラットフォームに依存します。
- [PARAM] path:
- パスを表す文字列を指定します。
m = FileTest.world_readable?("/etc/passwd") "%o" % m # => "644"
world_writable?(path) -> bool
[permalink][rdoc][edit]-
path が全てのユーザから書き込めるならば、そのファイルのパーミッションを表す整数を返します。そうでない場合は nil を返します。
整数の意味はプラットフォームに依存します。
- [PARAM] path:
- パスを表す文字列を指定します。
m = FileTest.world_writable?("/tmp") "%o" % m #=> "777"
writable?(file) -> bool
[permalink][rdoc][edit]-
ファイルがカレントプロセスにより書き込み可能である時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。
- [PARAM] file:
- ファイル名を表す文字列を指定します。
IO.write("testfile", "test") File.chmod(0600, "testfile") FileTest.writable?("testfile") # => true File.chmod(0400, "testfile") FileTest.writable?("testfile") # => false
writable_real?(file) -> bool
[permalink][rdoc][edit]-
ファイルがカレントプロセスの実ユーザか実グループによって書き込み可能である時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。
- [PARAM] file:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] FileTest.#writable?