From: Nobuyoshi Nakada Date: 2007-08-25T14:36:36+09:00 Subject: [ruby-list:43943] Re: Windows で正確なファイル名を取得するには なかだです。 At Sat, 25 Aug 2007 11:37:41 +0900, Five point Five wrote in [ruby-list:43939]: > Windows はファイル名の大文字/小文字を区別しないので,Ruby.txt と > いうファイルを指定するのに,ユーザーは "ruby.txt" と入力するかも > しれません。 > もちろん open('ruby.txt') は成功します。 > > しかし,大文字/小文字の区別も含めて正確なファイル名が知りたいと > きはどうすればよいのでしょうか? * Dir.globで探す def realpathname(name) Dir.glob("#{name}*").select {|n|File.fnmatch(name, n, File::FNM_SYSCASE)} end * WindowsのGetLongPathName()を使う require 'dl/win32' GetLongPathName = Win32API.new(*%w"kernel32 GetLongPathName SSI I") def realpathname(name) if (len = GetLongPathName.call(name, nil, 0)).nonzero? buf = "\0" * len buf[0...GetLongPathName.call(name, buf, buf.size)] end end -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦