ファイル情報をハッシュで受け取る
データの受け渡しはハッシュでやった方が楽に感じる。
取得する属性は、ファイル名(絶対パス)・ファイルサイズ・
ファイルタイプ・最終アクセス時刻・最新ファイル状態更新時刻・
最終更新時刻の 6 つ。
def file2hash(file) method = %w(ftype size atime mtime ctime) file_list = [] if File.directory?(file) file_list = Dir::glob("#{file}/*").dup else file_list << file end data = [] file_list.each {|f| fstat = File.stat(f) item = {} method.each {|m| item[m.to_sym] = fstat.send(m) } item[:name] = File.expand_path(f) data << item } data end
- 実行結果
[{:ctime=>Wed, Nov 28 2007 00:43:25 +0900,
:name=>"D:/home/develop/old",
:ftype=>"directory",
:size=>0,
:atime=>Wed, Dec 05 2007 00:35:23 +0900,
:mtime=>Wed, Nov 28 2007 00:43:36 +0900},
{:ctime=>Fri, Apr 06 2007 00:06:32 +0900,
:name=>"D:/home/develop/proxy",
:ftype=>"directory",
:size=>0,
:atime=>Wed, Dec 05 2007 00:35:23 +0900,
:mtime=>Sun, Nov 25 2007 22:04:10 +0900},
{:ctime=>Wed, Nov 28 2007 00:43:48 +0900,
:name=>"D:/home/develop/ruby",
:ftype=>"directory",
:size=>0,
:atime=>Wed, Dec 05 2007 00:53:12 +0900,
:mtime=>Wed, Dec 05 2007 00:53:12 +0900}]