我正在编写一个Ruby CGI程序,它将附加到一个文件(如果它不存在则创建一个,然后写入),然后应立即读取该文件并将输出作为字符串返回。我有一个有效的方法,但是,我正在寻求优化它,因为我正在使用的方法似乎不是最有效的方法。我对Ruby比较陌生,所以任何建议都会很棒。我查看了Ruby中的File文档,但我对内存使用和优化有点不确定。非常感谢你。
def writeToFile(valuesToWrite)
out_file = File.new("out.txt", "a+")
out_file.puts(valuesToWrite)
fhandle = File.new("out.txt","a+")
lines = fhandle.readlines()
return lines
end
答案 0 :(得分:2)
试试这个:
def writeToFile(values_to_write)
out_file = File.new("out.txt", "a+")
out_file.puts(values_to_write)
out_file.rewind
lines = out_file.readlines
out_file.close
lines
end
答案 1 :(得分:0)
是的,您可以写如下:
def write_to_file(values_to_write)
offset = File.size("out.txt")
File.write("out.txt", values_to_write, offset)
File.readlines("out.txt")
end
IO::write
doc说: -
打开文件,可选搜索到给定的偏移量,写入字符串,然后返回写入的长度。 写入确保文件在返回之前关闭。如果未给出 offset ,则文件截断。否则,不会被截断。
另请阅读IO::readlines
。
这里的重点是,我不需要考虑文件关闭,它将由Ruby本身完成。