From: Kazuhiro NISHIYAMA Date: 2001-08-19T20:28:02+09:00 Subject: [ruby-list:30992] Re: file exist check method? In <200108182012.AA00795@yoshida.nifty.ne.jp> On Sun, 19 Aug 2001 05:15:18 +0900 Kazuhiro Yoshida wrote: > 1. / と \ > > File, Dir クラスのメソッドにファイル名として与える引数 (String) は > セパレータとして / と \ を用いることができ,どちらの > セパレータを用いても同じ返り値 ( セパレータは / ) を返すようにする。 > つまり,任意の path で > > assert File.foo(path), File.foo(path.tr('\\', '/')) これってpathがSJISのときに問題があるので、 assert File.foo(path), File.foo(path.gsub(/\\/, '/')) でしょうか。 > および > > assert File.foo(path), File.foo(path.tr('/', '\\')) > > が成り立つように foo (= dirname, basename, ...) を実装する。 こっちはtrでもいいと思うのですが。 > 4. File.split, join > > 基本的に, > File.split して File.join すると元に戻る。 > > assert path, File.join(File.split(path)) > > File.split, join と Array#split, join は > (File::SEPARATOR を Array#split, join の引数にして) 相互に > 交換可能である。 > > pair = File.split(path) > > assert pair.join(File::SEPARATOR), File.join(pair) > > また,File.split して作られる配列の要素は > File.dirname, File.basename と等しい。 > > assert pair, [ File.dirname(path), File.basename(path) ] > > これらを満たすように File.split, join を実装する。 dirnameとbasenameの2つに分割するだけならArray#splitとは 交換可能にはならないと思うのですが。 -- |ZnZ(ゼット エヌ ゼット) |西山和広(Kazuhiro NISHIYAMA)