3.1. Volume クラスを使ってみる


3.1.01. Volume オブジェクトを作成する

  require "bfs"
  p Bfs::Volume.new("/boot")

最初に bfs クラスライブラリをロードします.2 行目で,Volume オブジェクトを作成しています.クラスメソッドの Volume::new は引数にボリュームのパス名をとります.また,このプログラムは次のようにも記述できます.

  require "bfs"
  include Bfs

  p Volume.new("/boot")

それぞれのクラス (Attr や,Index など) は,Bfs というモジュールで名前空間 (ネームスペース) を分けているので,2 行目でインクルードして使っています.


3.1.02. ブートボリュームを取得する

  require "bfs"
  include Bfs

  p Volume.boot

クラスメソッドの Volume::boot はブートボリュームを返します.


3.1.03. すべてのボリュームを取得する

  require "bfs"
  include Bfs

  p Volume.entries

クラスメソッドの Volume::entries は Volume オブジェクトの配列を返します.


3.1.04. デバイスナンバを取得する

  require "bfs"
  include Bfs

  vol = Volume.new("/boot")
  puts vol.dev

Volume#dev メソッドはデバイスナンバを返します.


3.1.05. root の inode を取得する

  require "bfs"
  include Bfs

  vol = Volume.new("/boot")
  puts vol.root

Volume#root メソッドは root の inode を返します.


3.1.06. フラグを取得する

  require "bfs"
  include Bfs

  vol = Volume.new("/boot")
  puts vol.flags

Volume#flags メソッドはフラグを返します.


3.1.07. ブロックサイズを取得する

  require "bfs"
  include Bfs

  vol = Volume.new("/boot")
  puts vol.block_size

Volume#block_size メソッドはブロックサイズを返します.


3.1.08. 最適な i/o サイズを取得する

  require "bfs"
  include Bfs

  vol = Volume.new("/boot")
  puts vol.io_size

Volume#io_size メソッドは最適な i/o サイズを返します.


3.1.09. 総ブロック数を取得する

  require "bfs"
  include Bfs

  vol = Volume.new("/boot")
  puts vol.total_blocks

Volume#total_blocks メソッドは総ブロック数を返します.


3.1.10. 使われていないブロック数を取得する

  require "bfs"
  include Bfs

  vol = Volume.new("/boot")
  puts vol.free_blocks

Volume#free_blocks メソッドは使われていないブロック数を返します.


3.1.11. 総ノード数を取得する

  require "bfs"
  include Bfs

  vol = Volume.new("/boot")
  puts vol.total_nodes

Volume#total_nodes メソッドは総ノード数を返します.


3.1.12. 使われていないノード数を取得する

  require "bfs"
  include Bfs

  vol = Volume.new("/boot")
  puts vol.free_nodes

Volume#free_nodes メソッドは使われていないノード数を返します.


3.1.13. デバイス名を取得する

  require "bfs"
  include Bfs

  vol = Volume.new("/boot")
  puts vol.device_name

Volume#device_name メソッドはデバイス名を返します.


3.1.14. ボリューム名を取得する

  require "bfs"
  include Bfs

  vol = Volume.new("/boot")
  puts vol.volume_name

Volume#volume_name メソッドはボリューム名を返します.


3.1.15. ファイルシステムハンドラ名を取得する

  require "bfs"
  include Bfs

  vol = Volume.new("/boot")
  puts vol.fsh_name

Volume#fsh_name メソッドはファイルシステムハンドラ名を返します.


3.1.16. リムーバブルディスクか?を問い合わせる

  require "bfs"
  include Bfs

  vol = Volume.new("/boot")
  puts vol.removable?

Volume#removable? メソッドは,そのボリュームがリムーバブルディスクなら true を返し,そうでないなら false を返します.


3.1.17. 読み込み専用か?を問い合わせる

  require "bfs"
  include Bfs

  vol = Volume.new("/boot")
  puts vol.read_only?

Volume#read_only? メソッドは,そのボリュームが読み込み専用なら true を返し,そうでないなら false を返します.


3.1.18. 永続的か?を問い合わせる

  require "bfs"
  include Bfs

  vol = Volume.new("/boot")
  puts vol.persistent?

Volume#persistent? メソッドは,そのボリュームが永続的なら true を返し,そうでないなら false を返します.


3.1.19. ネットワークにつながっているのか?を問い合わせる

  require "bfs"
  include Bfs

  vol = Volume.new("/boot")
  puts vol.shared?

Volume#shared? メソッドは,そのボリュームがネットワークにつながっている (共有) なら true を返し,そうでないなら false を返します.


3.1.20. MIME タイプが使えるか?を問い合わせる

  require "bfs"
  include Bfs

  vol = Volume.new("/boot")
  puts vol.knows_mime?

Volume#knows_mime? メソッドは,そのボリュームが MIME タイプが使えるなら true を返し,そうでないなら false を返します.


3.1.21. ファイル属性を扱えるか?を問い合わせる

  require "bfs"
  include Bfs

  vol = Volume.new("/boot")
  puts vol.knows_attr?

Volume#knows_attr? メソッドは,そのボリュームがファイル属性を扱えるなら true を返し,そうでないなら false を返します.


3.1.22. クエリに応じるか?を問い合わせる

  require "bfs"
  include Bfs

  vol = Volume.new("/boot")
  puts vol.knows_query?

Volume#knows_query? メソッドは,そのボリュームでクエリが使えるなら true を返し,そうでないなら false を返します.


s_nojo@geocities.co.jp