【发布时间】:2014-08-12 16:49:28
【问题描述】:
假设我像这样在 Ruby 中打开一个文件:
f = File.open('diagram.txt', 'r')
现在,为了关闭和删除该文件,我有以下代码:
begin
f = File.open('diagram.txt', 'r')
ensure
if !f.nil? && File.exist?(f)
f.close unless f.closed?
File.delete(f)
end
end
我发现这段代码太复杂了,如果 f 已经关闭,File.exist?(f) 会失败。那么,避免关闭和删除文件引发异常的正确做法是什么?
注意:我知道将块传递给 File.open 将直接关闭文件,但是,我正在寻找关闭和删除的一般方法。
【问题讨论】:
-
如果你将一个块传递给 File.open,它会在块的末尾自动关闭文件。