创建一个临时文件,而无需在Ruby中打开它

有没有办法创建一个临时文件,而不打开它? 我必须运行一个可执行文件,将它的输出重定向到一个文件,然后读取并解析它。 tempfile创建的所有内容tempfile打开,这会触发错误,因为文件已被锁定。

是否使用FileUtils.touch可接受的解决方案? 完成任何您想要的操作后,您可以触摸文件并将其删除。

您也可以使用Dir :: Tmpname

 Dir::Tmpname.create('your_application_prefix') { |path| puts path } 

路径将包含唯一的路径

请参阅https://github.com/ruby/ruby/blob/ruby_1_9_3/lib/tmpdir.rb#L116

我没有收到错误:

 Andrew-Grimms-MacBook-Pro:~ agrimm$ irb >> require "tempfile" => true >> tempfile = Tempfile.new("temporary_file.txt", "/tmp") => # >> tempfile.close => nil >> system("echo foo > #{tempfile.path}") => true >> system("cat #{tempfile.path}") foo => true >> tempfile.path => "/tmp/temporary_file.txt20110622-648-pkynjw-0" >> exit Andrew-Grimms-MacBook-Pro:~ agrimm$ cat /tmp/temporary_file.txt20110622-648-pkynjw-0 foo 

然后,临时文件似乎不是暂时的。

所有程序或仅仅是特定程序是否会发生错误? 此外,您是否可以发布导致问题的代码,以及您获得的错误回溯?

您可能想要使用管道。

如果从ruby程序启动可执行文件,请考虑使用IO.popen 。

如果它们是不同的进程,您可以尝试命名管道 。