myFile.txt包含
This is a sample file
This contains some data
End of file
我将创建一个内容字符串(动态)并将数组写入文件
我尝试使用r +模式,但它会覆盖现有内容
file = File.open('myFile.txt','r+')
myString = 'Dynamic content' # varies accordingly for each file based on file
while (line = @file.gets)
next unless line =~ /sample file/
@file.puts(myString)
break
end
但它导致myFile.txt包含
This is a sample file
Dynamic content
e data
End of file
我尝试使用+模式,它附加到最后一个,因为追加模式添加到文件的最后一个
我试图将myFile.txt设为
This is a sample file
Dynamic content
This contains some data
End of file
ruby中还有其他方法/模式吗?
答案 0 :(得分:4)
将文件视为一张纸。一旦你写了一些东西,添加内容的唯一安全方法是追加。如果不覆盖某些内容,则无法在纸张中间书写文字。
通常,这种插入是通过临时文件完成的。它是这样的:
source
target
以便撰写source
读取到插入点并将其写入target
target
source
复制到target
source
target
重命名为source
的名称。