2017-06-15 59 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)。 –

相關問題