テキストファイルに文字列を挿入する方法
概要
文字列を追加したい構成ファイルがあります。そのように:
line1
line2
line3
line4
新しい文字列は追加するのではなく、ファイルの途中に書き込む必要があります。したがって、ファイル内の特定の位置(または文字列)を探しており、それが見つかったら、新しい文字列を挿入します。
file = File.open(path,"r+")
while (!file.eof?)
line = file.readline
if (line.downcase.starts_with?("line1"))
file.write("Some nice little sentence")
end
end
問題は、Ruby がその位置の行を新しいテキストで上書きするため、結果は次のようになります。
line1
Some nice little sentence
line3
line4
私が望むのは「本物の」挿入です。
line1
Some nice little sentence
line2
line3
line4
どうすればこれを達成できるでしょうか?
解決策
ファイルが小さい場合、最も簡単な方法は次のとおりだと思います。
これが Rails が舞台裏で行う方法です。
または、次のように 1 行ずつコピーし、元のファイルを mv で上書きすることもできます。
require 'fileutils'
tempfile=File.open("file.tmp", 'w')
f=File.new("file.txt")
f.each do |line|
tempfile<<line
if line.downcase=~/^line2/
tempfile << "Some nice little sentence\n"
end
end
f.close
tempfile.close
FileUtils.mv("file.tmp", "file.txt")