我遇到一种情况,我想从例程中返回文件句柄。当读取该文件句柄的最后一个字节时,将删除正在读取的文件。这是一种创建临时文件的简单方法,该临时文件一旦被读取便会删除。
Tempfile并不能真正用于此目的。要使用Tempfile,我必须创建Tempfile,将源文件的全部内容读写到Tempfile,后退Tempfile,然后返回Tempfile对象。非常浪费。我只想打开一个文件并返回一个文件句柄,但是当读取最后一个字节时会删除该文件。
我也许可以自己编写此类,但如果存在,我宁愿使用现有的解决方案。
答案 0 :(得分:0)
它是否必须返回文件句柄类型,或者它可以在文件句柄上起作用?如果是后者,则可以使用闭包和lambda。如下所示:
def sp_handle(fname)
handle = File.open(fname)
->(){
line = handle.gets
line ? line : (File.unlink(fname); handle.close)
}
end