2017-06-15 58 views
2

MYFILE.TXT包含如何在文本文件中插入一行?

This is a sample file 
This contains some data 
End of file 

我将创建内容的字符串(动态地)并且写入文件内的阵列

我试图与R +模式,但它会覆盖现有的内容

file = File.open('myFile.txt','r+') 
myString = 'Dynamic content' # varies accordingly for each file based on file 
while (line = @file.gets) 
    next unless line =~ /sample file/ 
    @file.puts(myString) 
    break 
end 

但它导致myFile.txt包含

This is a sample file 
Dynamic content 
e data 
End of file 

我有一个+模式尝试使用和追加模式增加了最后的文件追加到最后

我试图让MYFILE.TXT作为

This is a sample file 
Dynamic content 
This contains some data 
End of file 

是否有任何其他方式/在红宝石模式做到这一点?

回答

4

将文件视为一张纸。一旦你写了一些东西,添加内容的唯一安全方法就是追加。你不能在不改写某些东西的情况下在文章的中间写文本。

通常,这种插入是通过临时文件完成的。它是这样的:

  1. 开源文件source阅读
  2. 阅读从source高达插入点创建一个新的文件target和写入到target
  3. 写新content to target
  4. source的其余部分复制到target
  5. 关闭t他档案
  6. 删除/重命名source
  7. target重命名为什么source被命名。
+0

如果内存服务,在遥远的过去文件中的一段时间是纸张(磁带或卡)。 –

+0

@CarySwoveland:哦是的,我见过工厂机器从[像这样的代码]工作(https://upload.wikimedia.org/wikipedia/commons/8/8d/%D0%9F%D0%B5%D1% 80%D1%84%D0%BE%D0%BA%D0%B0%D1%80%D1%82%D0%B0.jpg)。 –

相关问题