ruby - 读取一次文件句柄
问题描述
我有一种情况,我想从例程中返回文件句柄。当读取该文件句柄的最后一个字节时,正在读取的文件被删除。这将是一种创建临时文件的简单方法,该文件一旦被读取就会被删除。
Tempfile并不能真正用于此目的。要使用 Tempfile,我必须创建 Tempfile,读取源文件的全部内容并将其写入 Tempfile,倒回 Tempfile,然后返回 Tempfile 对象。很浪费。我只想打开一个文件并返回一个文件句柄,但它会在读取最后一个字节时删除文件。
我可能自己编写这个类,但如果存在,我宁愿使用现有的解决方案。
解决方案
它必须返回文件句柄类型还是可以在文件句柄上工作?如果是后者,那么您可以使用闭包和 lambda。如下所示:
def sp_handle(fname)
handle = File.open(fname)
->(){
line = handle.gets
line ? line : (File.unlink(fname); handle.close)
}
end
推荐阅读
- javascript - 如何在数据表初始化期间将 HTML 元素的值传递给“ajax”选项
- python - 使用 Python 从 mySQL 读取 BLOB 文件
- python - [lambda x:i*x for i in range(4)] 的输出
- java - 如何在 HashMap 上使用双迭代器修复“java.util.ConcurrentModificationException”
- duplicates - 停止应用制作工具创建重复关系
- powershell - 如何在 Batch 或 Powershell 中将二进制转换为十六进制?
- c# - 无法从 VSTO(Excel 加载项)连接到 ENCRYPTED Access db (accdb) - 但可以从 Console-App
- r - 如何在 r 中的 Y 轴上创建具有自定义偏移的多线图?
- android - Mockwebserver 和 OkHttpIdlingResrouce 连接异常
- php - 需要一种更简洁的方法来打破 php 的平局