2009-06-12 23 views
1

我有一個問題,下載到本地文件鎖定它,直到我殺死了ruby腳本。在預感上,我改變了呼叫的形式,現在它不鎖定文件。Ruby open-uri文件鎖定

有人可以告訴我爲什麼下面的第二個表格不鎖定文件,但第一個呢?

這種形式鎖定本地文件:

open(ver_local_zip, "w+").write(open(remote_zip, :proxy=>ftp_proxy).read) 

這種形式不鎖定文件:

open(ver_local_zip, "w+") { |f| f.write(open(remote_zip, :proxy=>ftp_proxy).read) } 

感謝。

回答

2

調用用塊打開的方法通常會在塊完成後立即關閉文件。如果沒有塊,請打開返回一個文件(句柄),該文件將在下一次垃圾回收發生時釋放。

+0

我懷疑。謝謝回答。 – digitalsanctum 2009-06-12 15:31:57