RubyでCGIスクリプトを作る下準備・ファイルの読み書き

典型的なファイルの読み書きのデモ。
多分、windowsではflockは使えない。

ftest.rb

#!/usr/local/bin/ruby

#
# ファイルの読み書きデモ
#

file1 = "ftest.rb" # このスクリプトのファイル名
file2 = "test.txt" # 書き込みテスト用の空ファイル
lock  = "YES"      # YESならflockを使う

##### ファイルの各行を配列に割り当てて表示

print "■ファイルの各行を配列に割り当てて表示\n"

File.open(file1) { |f|
  $lines = f.readlines
} # 括弧が閉じれば自動的にファイルがクローズされる

$lines.each { |l|
  print l
}

print "\n"

##### ファイルから一行ずつ読み込んで表示

print "■ファイルから一行ずつ読み込んで表示\n"

File.open(file1) { |f|
  while f.gets
    print $_
  end
}

print "\n"

##### ファイルから数字を読みとり1足して書き込む

print "■ファイルから数字を読みとり1足して書き込む\n"

File.open(file2, "r+") { |f|
  if (lock == "YES")
    f.flock(File::LOCK_SH) # ファイルが閉じれば自動的にロック解除
  end

  count = f.read.to_i
  count = count + 1
  f.pos = 0 # ファイルポインタを先頭にする
  f.print "#{count}"
  print "count = #{count}\n"
}