RubyCGI.org

RubyでCGIを作ろう


7章2節 Tips2 r+でファイルをオープン 更新日付: [2002-05-17]



ちょっとしたTipsを紹介します。

トップページにも書いてありますがHP大改革計画中。

最近やらかしたRubyでのおおぽか。

ファイルのオープン時に


open(file, "r+") do |fh|
file_data = fh.read
file_data = file_data.sub(/#{source_str}/, changed_str)
fh.rewind
fh.write file_data
end


こんなことをやっていたのです。期待としてはファイルを読み込んで、変換して、新しいファイルに書き換える。でも、新しいファイルが元よりも小さい場合に、どうもゴミが残るんです。よく考えたら、rewindしてもファイルは消えないんですね。。。(苦笑)そんなわけで、rewindの前にtruncate(0)を入れて、ファイルの中身を消すようにしました。で直したものが以下です。


open(file, "r+") do |fh|
file_data = fh.read
file_data = file_data.sub(/#{source_str}/, changed_str)
fh.truncate(0)
fh.rewind
fh.write file_data
end


RubyによるCGIプログラミング
RubyによるCGIプログラミング

<− 前へ : 7.1. Tips1 DreamWeaver4でeRubyを使う設定

RubyでCGIを作ろうトップ

| トップページ | 書籍「Ruby/GTKプログラミング入門」 | 書籍「RubyによるCGIプログラミング」 | RubyでCGIを作ろう | リンク集 | ツールなど | 自己紹介 |