读取一次文件句柄

时间:2019-10-07 02:53:31

标签: ruby file

我遇到一种情况,我想从例程中返回文件句柄。当读取该文件句柄的最后一个字节时,将删除正在读取的文件。这是一种创建临时文件的简单方法,该临时文件一旦被读取便会删除。

Tempfile并不能真正用于此目的。要使用Tempfile,我必须创建Tempfile,将源文件的全部内容读写到Tempfile,后退Tempfile,然后返回Tempfile对象。非常浪费。我只想打开一个文件并返回一个文件句柄,但是当读取最后一个字节时会删除该文件。

我也许可以自己编写此类,但如果存在,我宁愿使用现有的解决方案。

1 个答案:

答案 0 :(得分:0)

它是否必须返回文件句柄类型,或者它可以在文件句柄上起作用?如果是后者,则可以使用闭包和lambda。如下所示:

def sp_handle(fname)
  handle = File.open(fname)

  ->(){
    line = handle.gets
    line ? line : (File.unlink(fname); handle.close)
  }

end
相关问题