【问题标题】:Writing to file using the .insert string method使用 .insert 字符串方法写入文件
【发布时间】:2011-08-26 10:27:59
【问题描述】:

使用r+ 模式和.insert 方法将代码写入文件中特定点的最佳方式?

gets.chomp 被使用并附加到一个名为x 的变量上,写入文件时需要在特定位置插入此变量和分配的字符串。

谢谢

【问题讨论】:

  • 什么编程语言???请明智地标记。
  • 哪个#insert 方法? AFAIK,你不能直接向打开的文件插入任何东西(你可以直接覆盖),你必须写入另一个文件。
  • Ruby this string method "abcde".insert(2, "X") 这意味着打开的文件必须放入字符串中才能使此方法正常工作,然后必须将字符串写入文件?

标签: ruby string methods insert


【解决方案1】:

您可以在文件中替换或插入内容。滚动到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

【讨论】:

  • 当然,这与通常的警告有关,即不要尝试读取大于可用内存的文件,并检查磁盘上是否有足够的空间来写回新文件....
  • 也可以复制旧文件的第一部分,将新块写入该副本,然后继续复制旧文件。这样可以避免将其全部拉入 RAM。
  • 感谢 steenslag 将我带到 Pleac,但 Ruby 字符串方法 .insert 是我想要使用的方法(如果可能的话)。由于它是一个字符串方法,肯定会使用 r+ 模式打开文件,因此将整个文件(不是大文件)放入一个字符串中,对该字符串使用 .insert 方法,然后将该字符串写入文件。这可能吗?
猜你喜欢
  • 1970-01-01
  • 2011-06-28
  • 2014-01-19
  • 2016-08-29
  • 1970-01-01
  • 2011-10-24
  • 2019-09-04
  • 2011-05-17
相关资源
最近更新 更多