ファイルアクセスのためのクラスです。
通常 Kernel.#open または File.open を使って生成します。 IO クラスがインクルードしている File::Constants は File クラスに関係する定数を格納したモジュールです。また File::Stat は stat 構造体( stat(2) 参照)を表すクラスです。
absolute_path(file_name, dir_string=nil) -> String
[permalink][rdoc]file_name を絶対パスに変換した文字列を返します。
相対パスの場合はカレントディレクトリを基準とします。 dir_string を渡した場合はそのディレクトリを基準とします。
File.expand_path と異なり、 file_name 先頭が "~" である場合それは展開されません。普通のディレクトリ名として処理されます。
p Dir.getwd #=> "/home/matz/work/bar" p ENV["HOME"] #=> "/home/matz" p File.absolute_path("..") #=> "/home/matz/work" p File.absolute_path("..", "/tmp") #=> "/" p File.absolute_path("~") #=> "/home/matz/work/bar/~" p File.absolute_path("~foo") #=> "/home/matz/work/bar/~foo"
[SEE_ALSO] File.expand_path
atime(filename) -> Time
[permalink][rdoc]最終アクセス時刻を返します。
例:
File.atime(__FILE__) # => 2017-11-28 22:38:44 +0900
basename(filename, suffix = "") -> String
[permalink][rdoc]filename の一番後ろのスラッシュに続く要素を返します。もし、引数 suffix が与えられて、かつそれが filename の末尾に一致するなら、それを取り除いたものを返します。
p File.basename("ruby/ruby.c") #=> "ruby.c" p File.basename("ruby/ruby.c", ".c") #=> "ruby" p File.basename("ruby/ruby.c", ".*") #=> "ruby" p File.basename("ruby/ruby.exe", ".*") #=> "ruby" p File.basename("ruby/y.tab.c", ".*") #=> "y.tab"
File.basename の動作は basename(3) に従います。
p File.basename("foo/bar/") # => "bar"
[SEE_ALSO] File.dirname, File.extname
birthtime(filename) -> Time
[permalink][rdoc]作成された時刻を返します。
File.birthtime("testfile") #=> Wed Apr 09 08:53:13 CDT 2003
blockdev?(path) -> bool
[permalink][rdoc]FileTest.#blockdev? と同じです。
[SEE_ALSO] FileTest.#blockdev?
chardev?(path) -> bool
[permalink][rdoc]FileTest.#chardev? と同じです。
chmod(mode, *filename) -> Integer
[permalink][rdoc]ファイルのモードを mode に変更します。モードを変更したファイルの数を返します。
chown(owner, group, *filename) -> Integer
[permalink][rdoc]ファイルのオーナーとグループを変更します。スーパーユーザだけがファイルのオーナーとグループを変更できます。変更を行ったファイルの数を返します。
IO.write("test.txt", "test")
File.chown(502, 12, "test.txt")
File.stat("test.txt").uid # => 502
[SEE_ALSO] File#chown
ctime(filename) -> Time
[permalink][rdoc]状態が最後に変更された時刻を返します。状態の変更とは chmod などによるものです。
IO.write("testfile", "test")
File.ctime("testfile") # => 2017-11-30 22:40:49 +0900
File.chmod(0755, "testfile")
File.ctime("testfile") # => 2017-11-30 22:42:12 +0900
delete(*filename) -> Integer
[permalink][rdoc]unlink(*filename) -> Integer
ファイルを削除します。削除したファイルの数を返します。削除に失敗した場合は例外 Errno::EXXX が発生します。
このメソッドは通常ファイルの削除用で、ディレクトリの削除には Dir.rmdir を使います。
例:
IO.write("test.txt", "test") p File.exist?("test.txt") # => true p File.delete("test.txt") # => 1 p File.exist?("test.txt") # => false begin File.delete("test.txt") rescue p $! # => #<Errno::ENOENT: No such file or directory @ unlink_internal - test.txt> end
directory?(path) -> bool
[permalink][rdoc]FileTest.#directory? と同じです。
dirname(filename) -> String
[permalink][rdoc]filename の一番後ろのスラッシュより前を文字列として返します。スラッシュを含まないファイル名に対しては "."(カレントディレクトリ)を返します。
p File.dirname("dir/file.ext") # => "dir" p File.dirname("file.ext") # => "."
File.dirname の動作は dirname(3) に従います。
p File.dirname("foo/bar/") # => "foo" p File.dirname("foo//bar") # => "foo"
[SEE_ALSO] File.basename, File.extname
zero?(path) -> bool
[permalink][rdoc]empty?(path) -> bool
FileTest.#zero? と同じです。
executable?(path) -> bool
[permalink][rdoc]FileTest.#executable? と同じです。
executable_real?(path) -> bool
[permalink][rdoc]FileTest.#executable_real? と同じです。
exist?(path) -> bool
[permalink][rdoc]FileTest.#exist? と同じです。
exists?(path) -> bool
[permalink][rdoc]このメソッドは deprecated です。File.exist? を使用してください。
expand_path(path, default_dir = '.') -> String
[permalink][rdoc]path を絶対パスに展開した文字列を返します。 path が相対パスであれば default_dir を基準にします。
先頭の ~ はホームディレクトリ(環境変数 HOME が使われます)に、 ~USER はそのユーザのホームディレクトリに展開されます。
p Dir.getwd #=> "/home/matz/work/foo" p ENV["HOME"] #=> "/home/matz" p File.expand_path("..") #=> "/home/matz/work" p File.expand_path("..", "/tmp") #=> "/" p File.expand_path("~") #=> "/home/matz" p File.expand_path("~foo") #=> "/home/foo"
extname(filename) -> String
[permalink][rdoc]ファイル名 filename の拡張子部分(最後の "." に続く文字列)を返します。ディレクトリ名に含まれる "." や、ファイル名先頭の "." は拡張子の一部としては見なされません。filename に拡張子が含まれない場合は空文字列を返します。
p File.extname("foo/foo.txt") # => ".txt" p File.extname("foo/foo.tar.gz") # => ".gz" p File.extname("foo/bar") # => "" p File.extname("foo/.bar") # => "" p File.extname("foo.txt/bar") # => "" p File.extname(".foo") # => ""
[SEE_ALSO] File.basename, File.dirname
file?(path) -> bool
[permalink][rdoc]FileTest.#file? と同じです。
fnmatch(pattern, path, flags = 0) -> bool
[permalink][rdoc]fnmatch?(pattern, path, flags = 0) -> bool
ファイル名のパターンマッチ fnmatch(3) を行います。 path が pattern にマッチすれば真を返します。そうでない場合には false を返します。
%w(foo foobar bar).each {|f| p File.fnmatch("foo*", f) } # => true true false
引数 flags に指定できる定数は以下のとおりです。これらの定数は File::Constants で定義されていますが、 File クラスの親クラスの IO が File::Constants をインクルードしているので、これらの定数は File::FNM_NOESCAPE などとして参照可能です。
エスケープ文字 `\' を普通の文字とみなします。
デフォルトでは \ を伴う任意の文字はその文字にマッチしますが、このフラグをつけると、\ が普通の文字として扱われます。
p File.fnmatch('\a', 'a') # => true p File.fnmatch('\a', '\a', File::FNM_NOESCAPE) # => true
前者で * は、エスケープされているので "*" そのものにマッチします。
p File.fnmatch('\*', 'a') # => false p File.fnmatch('\*', '\a', File::FNM_NOESCAPE) # => true
単体の \ は、このフラグの有無に関わらず \ にマッチします。 (シングルクォート文字列中では \\ は、\ であることに注意)
p File.fnmatch('\\', '\\') # => true p File.fnmatch('\\', '\\', File::FNM_NOESCAPE) # => true
ワイルドカード `*', `?', `[]' が `/' にマッチしなくなります。シェルのパターンマッチにはこのフラグが使用されています。
p File.fnmatch('*', '/', File::FNM_PATHNAME) # => false p File.fnmatch('?', '/', File::FNM_PATHNAME) # => false p File.fnmatch('[/]', '/', File::FNM_PATHNAME) # => false
アルファベットの大小文字を区別せずにパターンマッチを行います。
p File.fnmatch('A', 'a', File::FNM_CASEFOLD) # => true
ワイルドカード `*', `?', `[]' が先頭の `.' にマッチするようになります。
p File.fnmatch('*', '.', File::FNM_DOTMATCH) # => true p File.fnmatch('?', '.', File::FNM_DOTMATCH) # => true p File.fnmatch('[.]', '.', File::FNM_DOTMATCH) # => true p File.fnmatch('foo/*', 'foo/.', File::FNM_DOTMATCH) # => true
{} 内のコンマで区切られた文字列の組合せにマッチするようになります。例えば、foo{a,b,c} は fooa, foob, fooc に展開されそれぞれに対してマッチ判定を行います。
括弧は入れ子にすることができます。例えば、 {foo,bar{foo,bar}} は foo, barfoo, barbar のそれぞれにマッチします。
p File.fnmatch('foo{a,b,c}', 'fooa', File::FNM_EXTGLOB) # => true p File.fnmatch('{foo,bar{foo,bar}}', 'barfoo', File::FNM_EXTGLOB) # => true
ftype(filename) -> String
[permalink][rdoc]ファイルのタイプを表す文字列を返します。
文字列は以下のうちのいずれかです。File.lstat(filename).ftype と同じです。シンボリックリンクに対して "link" を返します。
例:
File.ftype("testfile") # => "file" File.ftype("/dev/tty") # => "characterSpecial" File.ftype("/tmp/.X11-unix/X0") # => "socket"
grpowned?(path) -> bool
[permalink][rdoc]FileTest.#grpowned? と同じです。
identical?(filename1, filename2) -> bool
[permalink][rdoc]FileTest.#identical? と同じです。
join(*item) -> String
[permalink][rdoc]File::SEPARATORを間に入れて文字列を連結します。DOSISH 対応で環境依存になる予定です。
lchmod(mode, *filename) -> Integer
[permalink][rdoc]File.chmod と同様ですが、シンボリックリンクに関してリンクそのもののモードを変更します。
IO.write("testfile", "test")
File.symlink("testfile", "testlink")
File.lstat("testlink").ftype # => "link"
File.lchmod(0744, "testlink")
File.stat("testlink").mode.to_s(8) # => "100644"
File.lstat("testlink").mode.to_s(8) # => "120744"
lchown(owner, group, *filename) -> Integer
[permalink][rdoc]File#chown と同様ですが、シンボリックリンクに関してリンクそのもののオーナー、グループを変更します。
IO.write("testfile", "test")
File.symlink("testfile", "testlink")
File.chown(501, -1, "testfile")
File.lstat("testlink").ftype # => "link"
File.lchown(0, -1, "testlink")
File.stat("testlink").uid # => 501
File.lstat("testlink").uid # => 0
link(old, new) -> 0
[permalink][rdoc]old を指す new という名前のハードリンクを生成します。old はすでに存在している必要があります。ハードリンクに成功した場合は 0 を返します。
失敗した場合は例外 Errno::EXXX が発生します。
例:
IO.write("testfile", "test") File.link("testfile", "testlink") # => 0 IO.read("testlink") # => "test"
lstat(filename) -> File::Stat
[permalink][rdoc]File.statと同様ですが、シンボリックリンクに関してリンクそのものの情報を File::Stat として返します。lstat(2) を実装していないシステムでは、File.stat と同じです。
例:
# link.rb は t.rb のシンボリックリンク File.lstat("link.rb") == File.stat("t.rb") # => false File.stat("link.rb") == File.stat("t.rb") # => true
[SEE_ALSO] IO#stat, File#lstat
mkfifo(file_name, mode = 0666) -> 0
[permalink][rdoc]引数 file_name で指定した名前の FIFO スペシャルファイルを作成します。
例:
File.mkfifo("testfile", 0666) File.ftype("testfile") # => "fifo"
mtime(filename) -> Time
[permalink][rdoc]最終更新時刻を返します。
例:
File.mtime(__FILE__) # => 2017-12-03 03:16:22 +0900
new(path, mode = "r", perm = 0666) -> File
[permalink][rdoc]open(path, mode = "r", perm = 0666) -> File
open(path, mode = "r", perm = 0666) {|file| ... } -> object
path で指定されるファイルをオープンし、File オブジェクトを生成して返します。
path が整数の場合はファイルディスクリプタとして扱い、それに対応する File オブジェクトを生成して返します。IO.open と同じです。ブロックを指定して呼び出した場合は、File オブジェクトを引数としてブロックを実行します。ブロックの実行が終了すると、ファイルは自動的にクローズされます。ブロックの実行結果を返します。
例: File.new による読み込みモードでのファイルオープン
f = File.new("testfile", "r") f.class # => File f.close
例: File.open による読み込みモードでのファイルオープン
f = File.open("testfile", "r") f.class # => File f.close
例: File.open による書き込みモードでのファイルオープン
File.open("testfile", "w", 0755) { |f| f.print "test" } File.read("testfile") # => "test"
owned?(path) -> bool
[permalink][rdoc]FileTest.#owned? と同じです。
path(filename) -> String
[permalink][rdoc]指定されたファイル名を文字列で返します。filename が文字列でない場合は、to_path メソッドを呼びます。
例:
require 'pathname' class MyPath def initialize(path) @path = path end def to_path File.absolute_path(@path) end end File.path("/dev/null") # => "/dev/null" File.path(Pathname("/tmp")) # => "/tmp" File.path(MyPath.new(".")) # => "/Users/user/projects/txt"
pipe?(path) -> bool
[permalink][rdoc]FileTest.#pipe? と同じです。
readable?(path) -> bool
[permalink][rdoc]FileTest.#readable? と同じです。
readable_real?(path) -> bool
[permalink][rdoc]FileTest.#readable_real? と同じです。
readlink(path) -> String
[permalink][rdoc]シンボリックリンクのリンク先のパスを文字列で返します。
IO.write("testfile", "test")
File.symlink("testfile", "testlink") # => 0
File.readlink("testlink") # => "testfile"
realdirpath(pathname, basedir = nil) -> String
[permalink][rdoc]与えられた pathname に対応する絶対パスを返します。
pathname の最後のコンポーネントは存在していなくても例外は発生しません。
realpath(pathname, basedir = nil) -> String
[permalink][rdoc]与えられた pathname に対応する絶対パスを返します。
pathname の全てのコンポーネントは存在しなければなりません。
例:
ENV["HOME"] # => "/home/matz" File.symlink("testfile", "testlink") File.realpath("testfile") # => "/home/matz/testfile" File.realpath("testlink") # => "/home/matz/testfile" File.realpath("..", "/tmp") # => "/"
rename(from, to) -> 0
[permalink][rdoc]ファイルの名前を変更します。ディレクトリが異なる場合には移動も行います。rename(2) を参照してください。移動先のファイルが存在する時には上書きされます。
ファイルの移動に成功した場合 0 を返します。失敗した場合は例外 Errno::EXXX が発生します。
例:
begin File.rename("testfile", "testfile.bak") # => 0 File.rename("testfile", "testfile.bak") rescue # 2回目の rename 時にすでに testfile が存在しないため例外が発生する $! # => #<Errno::ENOENT: No such file or directory @ rb_file_s_rename - (testfile, testfile.bak)> end
setgid?(path) -> bool
[permalink][rdoc]FileTest.#setgid? と同じです。
setuid?(path) -> bool
[permalink][rdoc]FileTest.#setuid? と同じです。
size(path) -> Integer
[permalink][rdoc]FileTest.#size と同じです。
size?(path) -> bool
[permalink][rdoc]FileTest.#size? と同じです。
socket?(path) -> bool
[permalink][rdoc]FileTest.#socket? と同じです。
split(pathname) -> [String]
[permalink][rdoc]pathname を dirname とbasename に分割して、2 要素の配列を返します。
[File.dirname(pathname), File.basename(pathname)]
と同じです。
stat(filename) -> File::Stat
[permalink][rdoc]filename の情報を含む File::Stat オブジェクトを生成して返します。
例:
File.stat("testfile").class # => File::Stat File.stat("testfile").mtime # => 2017-12-10 01:13:56 +0900
[SEE_ALSO] IO#stat, File#lstat
sticky?(path) -> bool
[permalink][rdoc]FileTest.#sticky? と同じです。
symlink(old, new) -> 0
[permalink][rdoc]old への new という名前のシンボリックリンクを生成します。
シンボリックリンクの作成に成功すれば 0 を返します。失敗した場合は例外 Errno::EXXX が発生します。
例:
File.symlink("testfile", "testlink") # => 0
symlink?(path) -> bool
[permalink][rdoc]FileTest.#symlink? と同じです。
truncate(path, length) -> 0
[permalink][rdoc]path で指定されたファイルのサイズを最大 length バイトにします。
サイズの変更に成功すれば 0 を返します。失敗した場合は例外 Errno::EXXX が発生します。
例
IO.write("testfile", "1234567890") File.truncate("testfile", 5) # => 0 File.size("testfile") # => 5
umask -> Integer
[permalink][rdoc]現在の umask の値を返します。
[SEE_ALSO] umask(2)
umask(umask) -> Integer
[permalink][rdoc]umask を変更します。変更前の umask の値を返します。
File.umask(0006) # => 18
File.umask # => 6
[SEE_ALSO] umask(2)
utime(atime, mtime, *filename) -> Integer
[permalink][rdoc]ファイルの最終アクセス時刻と更新時刻を変更します。
例: Time を指定
atime = Time.new(2018, 1, 2, 3, 4, 5) mtime = Time.new(2018, 2, 3, 4, 5, 6) File.utime(atime, mtime, "testfile") # => 1 File.atime("testfile") # => 2018-01-02 03:04:05 +0900 File.mtime("testfile") # => 2018-02-03 04:05:06 +0900
例: 経過秒数で指定
File.utime(1, 2, "testfile") # => 1 File.atime("testfile") # => 1970-01-01 09:00:01 +0900 File.mtime("testfile") # => 1970-01-01 09:00:02 +0900
world_readable?(path) -> Integer | nil
[permalink][rdoc]path が全てのユーザから読めるならばそのファイルのパーミッションを表す整数を返します。そうでない場合は nil を返します。
整数の意味はプラットフォームに依存します。
例:
m = File.world_readable?("/etc/passwd") "%o" % m # => "644"
world_writable?(path) -> bool
[permalink][rdoc]path が全てのユーザから書き込めるならば、そのファイルのパーミッションを表す整数を返します。そうでない場合は nil を返します。
整数の意味はプラットフォームに依存します。
例:
m = File.world_writable?("/tmp") "%o" % m #=> "777"
writable?(path) -> bool
[permalink][rdoc]FileTest.#writable? と同じです。
writable_real?(path) -> bool
[permalink][rdoc]FileTest.#writable_real? と同じです。
atime -> Time
[permalink][rdoc]最終アクセス時刻を Time オブジェクトとして返します。
IO.write("testfile", "test")
File.open("testfile") { |f| f.atime } # => 2017-12-21 22:58:17 +0900
[SEE_ALSO] File#lstat, File#ctime, File#mtime, File#birthtime
birthtime -> Time
[permalink][rdoc]作成された時刻を Time オブジェクトとして返します。
File.new("testfile").birthtime #=> Wed Apr 09 08:53:14 CDT 2003
[SEE_ALSO] File#lstat, File#atime, File#ctime, File#mtime
chmod(mode) -> 0
[permalink][rdoc]ファイルのモードを指定された mode に変更します。
モードの変更に成功した場合は 0 を返します。失敗した場合は例外 Errno::EXXX が発生します。
例:
f = File.new("out", "w"); f.chmod(0644) #=> 0
chown(owner, group) -> 0
[permalink][rdoc]ファイルのオーナーとグループを変更します。
適切な権限があればファイルのオーナーとグループを変更できます。所有者の変更に成功した場合は 0 を返します。変更に失敗した場合は例外 Errno::EXXX が発生します。
File.open("testfile") { |f| f.chown(502, 1000) } # => 0
File.stat("testfile").uid # => 502
File.stat("testfile").gid # => 1000
[SEE_ALSO] File.chown
ctime -> Time
[permalink][rdoc]状態が最後に変更された時刻を Time オブジェクトとして返します。状態の変更とは chmod などによるものです。
IO.write("testfile", "test")
File.open("testfile") { |f| f.ctime } # => 2017-12-21 22:58:17 +0900
[SEE_ALSO] File#lstat, File#atime, File#mtime, File#birthtime
flock(operation) -> 0 | false
[permalink][rdoc]ファイルをロックします。
ロックを取得するまでブロックされます。ロックの取得に成功した場合は 0 を返します。 File::LOCK_NB (ノンブロッキング) を指定すると、本来ならブロックされる場合にブロックされずに false を返すようになります。
引数 operation に有効な定数は以下の通りです。定数は File::Constants で定義されていますが、 File クラスの親クラスの IO が File::Constants をインクルードしているので、これらの定数は File::LOCK_SH などとして参照可能です。
共有ロック。複数のプロセスが同時にロックを共有できます。システムによってはロック対象のファイルは読み込みモード ("r", "r+" など)でオープンされている必要があります。そのようなシステムでは読み込み可能でないファイルに対するロックは例外 Errno::EXXX が発生するかもしれません。
排他ロック。同時にはただひとつのプロセスだけがロックを保持できます。システムによってはロック対象のファイルは書き込みモード ("w", "r+" など)でオープンされている必要があります。そのようなシステムでは書き込み可能でないファイルに対するロックは例外 Errno::EXXX が発生するかもしれません。
アンロック。この明示的なアンロック以外に、ファイルのcloseやRubyインタプリタの終了 (プロセスの終了)によっても自動的にロック状態は解除されます。
ノンブロックモード。 File::LOCK_SH | File::LOCK_NB のように他の指定と or することで指定します。この指定がない場合、ブロックされる条件での flock の呼び出しはロックが解除されるまでブロックされます。
File::LOCK_NB の指定がある場合、ブロックされる条件での flock は false を返します。
「ブロックされる条件」とは以下のいずれかです。
例1:
# 書き込みロック(write lock)を使用してカウンタを更新。 # ロック前にファイルを切り詰めてしまうので、 # モードに"w"を使ってはいけません。 File.open("counter", File::RDWR|File::CREAT, 0644) {|f| f.flock(File::LOCK_EX) value = f.read.to_i + 1 f.rewind f.write("#{value}\n") f.flush f.truncate(f.pos) } # 読み込みロック(read lock)を使用してカウンタを読み込み。 File.open("counter", "r") {|f| f.flock(File::LOCK_SH) p f.read }
例2:
f = File.open("/tmp/foo", "w") f.flock(File::LOCK_EX) puts "locked by process1" fork { f = File.open("/tmp/foo", "r") f.flock(File::LOCK_SH) puts "locked by process2" sleep 5 puts "unlocked by process2" } sleep 5 f.flock(File::LOCK_UN) puts "unlocked by process1" sleep 1 # <- 子プロセスが確実に先にロックするための sleep f.flock(File::LOCK_EX) puts "re-locked by process1" => locked by process1 unlocked by process1 locked by process2 unlocked by process2 re-locked by process1
lstat -> File::Stat
[permalink][rdoc]ファイルの状態を含む File::Stat オブジェクトを生成して返します。シンボリックリンクに関してリンクそのものの情報を返します。 lstat(2) を実装していないシステムでは、IO#statと同じです。
例:
# testlink は testfile のシンボリックリンク File.open("testlink") do |f| p f.lstat == File.stat("testfile") # => false p f.stat == File.stat("testfile") # => true end
[SEE_ALSO] IO#stat, File.stat, File.lstat
mtime -> Time
[permalink][rdoc]最終更新時刻を Time オブジェクトとして返します。
IO.write("testfile", "test")
File.open("testfile") { |f| f.mtime } # => 2017-12-21 22:58:17 +0900
[SEE_ALSO] File#lstat, File#atime, File#ctime, File#birthtime
path -> String
[permalink][rdoc]to_path -> String
オープン時に使用したパスを文字列で返します。
パスは self に対応するファイルを指しているとは限りません。たとえば、ファイルが移動されていたり、削除されていたり、 File::Constants::TMPFILEオプション付きで作成されていたりする場合です。
File.open("testfile") {|f| f.path } #=> "testfile" File.open("/tmp/../tmp/xxx", "w") {|f| f.path } #=> "/tmp/../tmp/xxx" File.open("/tmp", File::RDWR | File::TMPFILE){|f| f.path } #=> "/tmp"
size -> Integer
[permalink][rdoc]ファイルのサイズを返します。
例:
File.open("/dev/null") do |f| f.size #=> 0 end
[SEE_ALSO] File#lstat
truncate(length) -> 0
[permalink][rdoc]ファイルのサイズを最大 length バイトにします。
サイズの変更に成功すれば 0 を返します。失敗した場合は例外 Errno::EXXX が発生します。
IO.write("testfile", "1234567890")
File.open("testfile", "a") do |f|
f.truncate(5) # => 0
f.size # => 5
end
ALT_SEPARATOR -> "\\" | nil
[permalink][rdoc]システムのファイルパスのセパレータが SEPARATOR と異なる場合に設定されます。MS-DOS などでは "\\" です。UNIX や Cygwin などでは nil です。
PATH_SEPARATOR -> ";" | ":"
[permalink][rdoc]PATH 環境変数の要素のセパレータです。UNIX では ":" MS-DOS などでは ";" です。
SEPARATOR -> "/"
[permalink][rdoc]Separator -> "/"
ファイルパスのセパレータです。ファイルを扱うメソッドにパス名を渡す場合などスクリプト内のパス名は環境によらずこのセパレータで統一されます。値は "/" です。