假设我在 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
我发现这段代码太复杂了,File.exist?(f)
如果 f 已经关闭,则会失败。那么,避免关闭和删除文件引发异常的正确方法是什么?
注意:我知道将块传递给 File.open 将直接关闭文件,但是,我正在寻找关闭和删除的一般方法。
处理 Errno::ENOENT 异常
自从你的图.txt文件不保证存在于您的示例代码中,您更大的问题是处理错误号::ENOENT例外。您可以致电文件#打开 http://www.ruby-doc.org/core/File.html#method-c-open在自关闭块中,然后在尝试打开或删除丢失的文件时使用救援来处理异常。例如:
begin
File.open('diagram.txt', 'r') do |f|
# do something with file
File.delete(f)
end
rescue Errno::ENOENT
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)