【发布时间】:2014-02-12 15:47:25
【问题描述】:
如果我通过Tempfile 创建了一个临时文件,除了将其复制到另一个文件之外,还有什么方法可以使其“永久”吗?当关联的Tempfile 实例被垃圾收集或进程终止时,我想避免它被删除。
在相关点上,有没有办法利用Tempfile 机制(或使用类似机制)来获取“新”文件名,而无需创建该名称的文件?
【问题讨论】:
-
您必须在该上下文中定义永久,因为根据定义,位于 RAM 上的任何东西都是注意永久。所以要么你必须使用文件(数据库、txt、XML 等)或内存。我能想到的两者之间没有办法(技术上存在,见cold boot attacks,但这是一个副作用)。但是,出于好奇,如果 RAM 或文件系统都不足以处理,您想要完成什么?
-
明确一点:你的意思是你还想要一个临时文件,在进程成功退出时最终被释放?
-
@atmosx “永久”是指“文件系统中不会在垃圾回收或退出时被删除的文件”。 FWIW,我对 Ruby
Tempfile机制的理解是,它实际上是在文件系统中创建文件,而不仅仅是在内存中,而且关于它们的唯一“临时”是它们会被自动删除。事实上,我已经能够从这些Tempfile对象之一(例如,在调试器中)获取路径名,并在另一个终端窗口中通过 shell 命令将其作为文件访问。 -
@p11y 不,我希望临时文件不再是临时文件(即不删除)。
-
@atmosx 像我的大多数 SO 问题一样,我对答案的兴趣超出了特定问题或用例,但在这种特定情况下,我在我的应用程序中使用了许多临时文件,有时在调试或开发,我想在程序退出后轻松“保留”一些用于分析。
标签: ruby temporary-files