使用 .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