讓我們說我有一個記錄器類,它具有指向打開文件的屬性。這個文件應該是開放的,直到這個類不再使用。例如:在ruby中釋放對象的最佳做法
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 2010-10-28 19:13:14