有没有办法创建一个临时文件,而不打开它?我必须运行一个可执行文件,将它的输出重定向到一个文件,然后读取&amp;解析那个。 <{1}}创建的所有内容都已打开,这会触发错误,因为该文件已被锁定。
答案 0 :(得分:23)
您也可以使用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
答案 1 :(得分:1)
我没有收到错误:
Andrew-Grimms-MacBook-Pro:~ agrimm$ irb
>> require "tempfile"
=> true
>> tempfile = Tempfile.new("temporary_file.txt", "/tmp")
=> #<File:/tmp/temporary_file.txt20110622-648-pkynjw-0>
>> 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
然后,临时文件似乎不是暂时的。
错误是发生在所有程序中,还是只发生在特定程序中?另外,你可以发布导致问题的代码,以及你得到的错误回溯吗?
答案 2 :(得分:0)
使用FileUtils.touch可接受的解决方案吗?完成所需的任何操作后,您都可以触摸文件并将其删除。
答案 3 :(得分:0)