How to insert a string into a textfile
ruby, ruby-on-rails
Solution
If it's a small file I think the easiest way would be to:
- Read the complete file.
- Insert the line.
- Write the new file.
That is the way Rails does it behind the scenes.
Or you can copy it line by line and then overwrite the original with `mv` like this:
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")
Problem
I have a configuration file to which I want to add a string, that looks e.g. like that: ``` line1 line2 line3 line4 ``` The new string should not be appended but written somewhere into the middle of the file. Therefore I am looking for a specific position (or string) in the file and when it has been found, I insert my new string: ``` 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 ``` The problem is that Ruby overwrites the line in that position with the new text, so the result is the following: ``` line1 Some nice little sentence line3 line4 ``` What I want is a "real" insertion: ``` line1 Some nice little sentence line2 line3 line4 ``` How can this be achieved?