ファイルの情報を取得する
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を利用すれば良い。