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
|
|