为什么在Ruby中读写文件时不能工作?
def write_to_file(a_file)
a_file.puts("hello")
end
a_file = File.new("test.txt", "w")
write_to_file(a_file)
我发现的替代方法是将文件名传递给每个读取或写入它的函数,并在该函数中打开和关闭它。
为什么我不能打开文件并将打开的文件对象传递给函数?我分配的a_file
变量不创建文件对象吗?
File.new
确实创建了一个文件,但它以缓冲模式(或非同步模式)打开,除非filename是一个tty。如果您想打开一个文件并向其写入内容,惯用的方法是:
File.open("test.txt", "w") do |file|
file.write("hello")
end
这确保在您完成时关闭文件。该文件处理程序可以随意传递:
def write_to_file(file)
file.write("hello")
end
File.open("test.txt", "w") do |file|
write_to_file(file)
end