From: Koji Arai Date: 2001-09-02T05:29:05+09:00 Subject: [ruby-list:31185] Re: file exist check method? 新井です。 今まで、ついて行けてなかったクセに割り込みですみませんが^^; In message "[ruby-list:31184] Re: file exist check method?" on 02 Sep 2001 04:35:31 +0900, "U.Nakamura" wrote: > こんにちは、なかむら(う)です。 > まぁ、これで決めたら二度と変えられないという話でもないと思う > ので、今回はこのパターンは抜きで推してみたいと思います。 > | (1) File.dirnameに関して | (a) File.dirname("c:/foo") # => "c:/" | (b) File.dirname("c:foo") # => "c:." 異論なし | (2) File.expand_pathに関して(Dir.chdir("d:/")と仮定) | (a) File.expand_path("c:foo", "c:/bar") # => "c:/bar/foo" | (b) File.expand_path("d:foo", "c:/bar") # => "d:/foo" 納得はできます。 | (3) File.joinに関して | (a) File.join("c:", "foo") # => "c:/foo" | (b) File.join("c:/", "foo") # => "c:/foo" | (c) File.join("c:.", "foo") # => "c:./foo" | (d) File.join("c:", "/foo") # => "c://foo" | 以下のような処理を仮定したとき file = "c:/foo/bar.txt" dir = "d:" File.copy(file, dir) p File.join(dir, File.basename file) => "d:bar.txt" が、うまく動くかどうかを考えると(a) は、c:foo あるいは c:./foo であって欲しい気持です。曖昧な指定をしてるのが悪いと も言えますけど、例えば第一引数にドライブレターだけが渡された とき"." を補う((c)の解釈)ということにすればルールは明確にな り曖昧さがなくなります。"c:" は、"c:." の意味であるという見 方は dirname でもやってるわけですから一貫性もあるように思い ます。 そうすると、(d) の答えも見えます。 # 私の意見は他の人とズレてるらしい(^^; > 念のために書くと、File.joinに関しては非DOSISHにも影響が出ま > すので、そっち系の賛否も知りたいところ。 これはどういう点でしょう?Unix系でも 結合部分の重複するセパ レータガ 1 つになるということですか?それはそれで構わないと 思います。 -- 新井康司 (Koji Arai)