如何打开文件,阅读文件,然后写入文件替换整个内容,然后将其关闭?
我可以这样做:
File.open('foo.bin', 'r') do |f|
contents = f.read
end
# do something with the contents
File.open('foo.bin', 'w') do |f|
f.print contents
end
但是有2个IO打开步骤和2个IO关闭步骤,并且将IO步骤加倍似乎是完全浪费,更不用说在磁盘上使用的次数与脚本中可能发生的次数相当多。
有没有办法打开,读取,覆盖,然后关闭?
答案 0 :(得分:3)
首先,如果您没有对代码进行分析,请立即执行此操作。额外的文件打开/关闭不太可能是您减速的原因。分析将显示真正的问题所在。
我不相信这会更快,但以下是一次打开和关闭的一般步骤。
在Ruby中,你这样做:
# Open the file for read/write.
File.open("test.data", "r+") { |f|
# Read the whole file
contents = f.read
# Truncate the file
f.truncate(0)
# Jump back to the beginning
f.rewind
# Write the new content
f.write("new stuff\n")
}