Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > tempfileライブラリ > Tempfileクラス
クラスの継承リスト: Tempfile < File < IO < Enumerable < File::Constants < Object < Kernel < BasicObject
テンポラリファイルを操作するためのクラスです。
new(basename, tempdir = Dir::tmpdir) -> Tempfile[permalink][rdoc]open(basename, tempdir = Dir::tmpdir) -> Tempfileopen(basename, tempdir = Dir::tmpdir) {|fp| ...} -> objectテンポラリファイルを作成し、それを表す Tempfile オブジェクトを生成して返します。 ファイル名のプレフィクスには指定された basename が使われます。 ファイルは指定された tempdir に作られます。 open にブロックを指定して呼び出した場合は、Tempfile オブジェクトを引数として ブロックを実行します。ブロックの実行が終了すると、ファイルは自動的に クローズされ、 ブロックの値をかえします。 new にブロックを指定した場合は無視されます。
例:
require "tempfile" t = Tempfile.open(['hoge', 'bar']) p t.path #=> "/tmp/hoge20080518-6961-5fnk19-0bar" t2 = Tempfile.open(['t', '.xml']) p t2.path #=> "/tmp/t20080518-6961-xy2wvx-0.xml"
例:ブロックを与えた場合
require 'tempfile'
tf = Tempfile.open("temp"){|fp|
fp.puts "hoge"
fp
}
# テンポラリファイルへのパスを表示
p tf.path
p File.read(tf.path) #=> "hoge\n"
close(real = false) -> nil[permalink][rdoc]テンポラリファイルをクローズします。 real が偽ならば、テンポラリファイルはGCによって削除されます。 そうでなければ、すぐに削除されます。
tf = Tempfile.open("bar")
tf.close
p FileTest.exist?(tf.path) # => true
close! -> nil[permalink][rdoc]テンポラリファイルをクローズし、すぐに削除します。
require "tempfile"
tf = Tempfile.open("bar")
path = tf.path
tf.close!
p FileTest.exist?(path) # => false
delete -> self[permalink][rdoc]unlink -> selfテンポラリファイルをクローズせずに、削除します。 UNIXライクなシステムでは、 作成したテンポラリファイルが他のプログラムに使用される機会をなくすために、 テンポラリファイルを作成しオープンした後、 すぐに削除するということがしばしばおこなわれます。
tf = Tempfile.new("foo")
tf.unlink
p tf.path # => nil
tf.print("foobar,hoge\n")
tf.rewind
p tf.gets("\n") # => "foobar,hoge\n"
length -> Integer[permalink][rdoc]size -> Integerテンポラリファイルのサイズを返します。
tf = Tempfile.new("foo")
tf.print("bar,ugo")
p tf.size # => 7
tf.close
p tf.size # => 0
open -> self[permalink][rdoc]クローズしたテンポラリファイルを再オープンします。 "r+" でオープンされるので、クローズ前の内容を再度読む ことができます。
tf = Tempfile.new("foo")
tf.print("foobar,hoge\n")
tf.print("bar,ugo\n")
tf.close
tf.open
p tf.gets # => "foobar,hoge\n"
path -> String | nil[permalink][rdoc]テンポラリファイルのパス名を返します。
Tempfile#close!を実行後だった場合にはnilを返します。
tf = Tempfile.new("hoo")
p tf.path # => "/tmp/hoo.10596.0"
tf.close!
p tf.path # => nil