假设我有一个记录器类,该类具有指向已打开文件的属性。直到不再使用此类为止,该文件应保持打开状态。例如:
class MyLogger
attr_accessor :log_file
def initialize
@log_file = File.new('my_log_file_name.log','w')
end
def finalize(id)
@log_file.close
end
end
我怎样才能确保在不再使用该实例时文件句柄将被关闭?我已经尝试了以下方法,但没有效果:
l = MyLogger.new
l = nil
ObjectSpace.garbage_collect
接下来,如果我试图删除这个文件,它会抛出一个错误,指出该文件正在使用中。
File.open
这样的方法,它接受一个块并处理打开和关闭文件句柄的操作。 - Chuck