更新已打开文件的内容

时间:2011-11-01 11:03:12

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

  

可能重复:
  Newbie: text replacement in my case

在我的Rails应用程序中,我的帮助程序中有一个方法,它通过以下方式打开文件:

content = File.open(myfile.txt)

该文件的内容如下:

my.car , my.seat, my.age;
my.son , my.dog, my.chair;
...

我想以将所有“我的”替换为“她”的方式更新此文件的内容

我知道我可以将“my”替换为“她的”

content = File.open('myfile.txt').read

content.split(';').each do |line|
      line.gsub!(/my/, "her")
end

但这仅在输出内容行时替换字符串,文件内容不会改变。 如何将已打开文件的内容更新为:

her.car , her.seat, her.age;
her.son , her.dog, her.chair;
...

-------------------更新(我试过的)------------------- -

我尝试了以下方式,但它没有清理旧内容,只是追加新内容,我想只有新内容,那该怎么办?

File.open('myfile.txt', 'r+') do |myfile|
      content = myfile.read

      content.split(';').each do |line|
         newline = line.gsub!(/my/, "her")
         myfile.write(newline+';')
      end

end

1 个答案:

答案 0 :(得分:1)

您必须将内容写回文件。

现在你实际上没有文件本身的变量,只是为了你正在阅读它的内容。

首先阅读内容,然后关闭文件,然后将其打开以进行书写。

试试这个:

content = File.open('myfile.txt').read

File.open('myfile.txt', 'w') do |myfile|    
  content.split(';').each do |line|
    line.gsub!(/my/, "her")
    write(line)
  end
end

注意:未经测试,我建议您阅读ruby中的文件。