【问题标题】:Ruby open-uri file lockingRuby open-uri 文件锁定
【发布时间】:2009-06-12 15:04:37
【问题描述】:

我遇到了一个问题,即下载到本地文件会锁定它,直到我终止了 ruby​​ 脚本。凭直觉,我改变了调用的形式,现在它没有锁定文件。

谁能告诉我为什么下面的第二个表单没有锁定文件,而第一个却可以?

此表单锁定本地文件:

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) }

谢谢。

【问题讨论】:

    标签: ruby file file-io open-uri


    【解决方案1】:

    使用块调用方法 open 通常会在块执行完成后立即关闭文件。没有块,打开返回一个文件(句柄),将在下一次垃圾回收发生时释放。

    【讨论】:

    • 我所怀疑的。感谢您的回答。
    • 请注意,您可以(并且应该)在使用第一种方法时手动释放返回的句柄,而不是等待 GC。
    猜你喜欢
    • 1970-01-01
    • 2015-02-09
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 2011-12-10
    • 1970-01-01
    • 2013-09-18
    相关资源
    最近更新 更多