2011-05-16 49 views
2

使用r+模式和.insert方法將代碼寫入文件中特定點的最佳方法是什麼?使用.insert字符串方法寫入文件

gets.chomp被使用並附加到一個名爲x的變量,它是這個變量和分配的字符串,在寫入文件時需要插入到特定位置。

謝謝

+0

什麼編程語言???請明智地標記。 – 2011-05-16 12:52:38

+0

對不起,Paul R,Ruby – Alex 2011-05-16 12:57:44

+0

哪個'#插入'方法? AFAIK,你不能直接插入任何東西到打開的文件(你可以覆蓋),你必須寫入另一個文件。 – 2011-05-16 13:34:47

回答

0

您可以替換或插入文件中的東西。滾動到Pleac上的「無臨時文件的位置修改文件」。這是脆弱的,不被認爲是良好的做法。通常的做法是:

  • 讀取原始文件
  • 修改內存中的內容
  • 寫入到一個temporary file
  • (可選)的原始文件重命名爲類似orig_file.old
  • 將臨時文件重命名爲原始文件名。

這種方式最大限度地減少了斷電時數據丟失的可能性等。

更新:根據您的意見,你需要像

File.open('test.txt', 'r+') do |f| 
    str = f.read 
    f.rewind 
    f.write(str.insert(6, ' HI THERE ')) 
end 
+1

當然這與通常的警告有關不試圖讀取大於可用內存的文件,並檢查磁盤上是否有足夠的空間將新文件寫回去...... – 2011-05-16 23:45:21

+0

它也是可以複製舊文件的第一部分,將新塊寫入該副本,然後繼續複製舊文件。這避免了將其全部放入RAM中。 – 2011-05-16 23:46:27

+0

感謝steenslag爲我帶來Pleac但Ruby字符串方法.insert是我想要使用(如果可能的話)。由於它是一個字符串方法,必須使用r +模式打開一個文件,將整個文件(不是大文件)放入一個字符串中,對該字符串使用.insert方法,然後將該字符串寫入該文件。那可能嗎? – Alex 2011-05-17 10:19:29