2011-05-16 65 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