我有一个配置文件,我想在其中添加一个字符串,例如像那样:
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 does it在幕后。
或者你可以逐行复制然后用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")
关于ruby-on-rails - 如何将字符串插入文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2139058/