ファイルの情報を取得する
Rubyで容量やパーミッションなどファイルの情報を取得するにはFile.stat
メソッドを使用する。File.stat
メソッドはファイルの情報を格納した、File::Stat
オブジェクトを返す。
stat = File.stat('/usr/bin/ruby') puts stat.size # 容量 puts "0%o" % stat.mode # パーミッション
File::Stat
の属性メソッドは以下のとおり。
属性メソッド | 取得できる情報 |
---|---|
dev | デバイス番号(ファイルシステム) |
dev_major | dev の major 番号部 |
dev_minor | dev の minor 番号部 |
ino | i-node 番号 |
mode | ファイルモード |
nlink | ハードリンクの数 |
uid | オーナーのユーザID |
gid | オーナーのグループID |
rdev | デバイスタイプ(スペシャルファイルのみ) |
rdev_major | rdev の major 番号部 |
rdev_minor | rdev の minor 番号部 |
size | ファイルサイズ(バイト単位) |
blksize | 望ましいI/Oのブロックサイズ |
blocks | 割り当てられているブロック数 |
atime | 最終アクセス時刻 |
mtime | 最終更新時刻 |
ctime | 最終状態変更時刻 |
またFile::Stat
には、File
と同様、ファイルの属性を検査するメソッドが用意されている。
stat = File.stat('/usr/bin/ruby') p stat.file? p stat.directory? p stat.readable? p stat.writable? p stat.executable?
File.stat
はファイルがシンボリックリンクだった場合、リンク先をたどってファイルの情報を取得する。シンボリックリンク自体の情報を取得したい場合は、代わりにFile.lstat
を利用すれば良い。