ファイルとディレクトリ

ファイル

ファイル名操作やファイルそのものの属性を操作したりする メソッドの集合体。

クラスメソッド

以下のものはクラスメソッドであり,オブジェクトの 確保なしにどのタイミングでも使える。

メソッド

以下のメソッドは IOクラスの非クラスメソッドである。既に開いているIOオブジェクト から利用する。

ディレクトリ

ディレクトリを操作したり,あるディレクトリに存在する ファイル名一覧を得るためのメソッド。

ファイルの消えるタイミング

ファイルはリンクカウント1のときの名前が消えても,そのファイルへの アクセスがある限りファイルシステムの一領域を占め続ける。 プログラム中で利用する一時ファイルを作成後,すぐに unlink しても close するまではアクセスし続けられる。

unlinktest.rb

#!/usr/bin/env ruby
tmpfile = ARGV.shift || "00TEMPFILE"
tmpdir  = File.dirname(tmpfile)

open(tmpfile, "w+") do |tf|
  1.upto(10) do |lineno|
    tf.printf("これは%02d行目\n", lineno)
  end
  tf.puts "-"*1024*1024         # 1MBのダミーデータ
  tf.flush                      # バッファを書き込み
  tf.rewind                     # ファイルポインタを先頭に
  system "ls -lF #{tmpfile}"
  STDERR.puts "改行を押すとこのファイルを消します。"
  STDIN.gets
  File.unlink(tmpfile)
  system "ls -lF #{tmpfile}"
  STDERR.puts "closeする前のこのディスクの空き容量:"
  system "df -k #{tmpdir}"
  STDERR.puts "1行目から読みます。"
  STDERR.puts "別の端末でlsして#{tmpfile}がないことを確認しましょう。"
  10.times do |l|
    print tf.gets
    sleep 1
  end
end
STDERR.puts "closeされたあとのこのディスクの空き容量:"
system "sync; sync; df -k #{tmpdir}"

本日の目次

yuuji@e.koeki-u.ac.jp