使用 .insert 字符串方法写入文件

Posted

技术标签:

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

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

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

谢谢

【问题讨论】:

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

以上是关于使用 .insert 字符串方法写入文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PowerShell 中将计算值写入 SQL INSERT/UPDATE

将数据连续写入文件的 C 最快方法 [关闭]

写入一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。

Python 文件 write() 方法

C++ 将字符串写入文件 = 额外字节

写操作费用[Go lang]