要約
テンポラリファイルを操作するためのクラスです。
- テンポラリファイルを作成します。 ファイルは "w+" モードで "basename.pid.n" という名前になります。
- Tempfile オブジェクトはFileクラスへのDelegatorとして定義されており、Fileクラスのオブジェクトと同じように使うことができます。
- Tempfile#close(true) により、作成したテンポラリファイルは削除されます。
- スクリプトが終了するときにも削除されます。
- Tempfile#openにより、テンポラリファイルを再オープンすることができます。
- テンポラリファイルのモードは 0600 です。
目次
継承しているメソッド
- Delegatorから継承しているメソッド
特異メソッド
create(basename="", tmpdir=nil, mode: 0, **options) -> File
[permalink][rdoc][edit]create(basename="", tmpdir=nil, mode: 0, **options) {|fp| ...} -> object
-
テンポラリファイルを作成し、それを表す File オブジェクトを生成して返します(Tempfileではありません)。 createはopenに似ていますが、finalizerによるファイルの自動unlinkを行いません。
ブロックを指定しなかった場合、tmpdirにファイルを作り、Fileオブジェクトを返します。このファイルは自動的に削除されません。ファイルを削除する場合は明示的にunlinkすべきです。
ブロックを指定して呼び出した場合、tmpdirにファイルを作り、 Fileオブジェクトを引数としてブロックを呼び出します。ブロック終了時にファイルをクローズするのはopenと同じですが、 createではファイルのunlinkも自動で行います。
- [PARAM] basename:
- ファイル名のプレフィクスを文字列で指定します。文字列の配列を指定した場合、先頭の要素がファイル名のプレフィックス、次の要素がサフィックスとして使われます。
- [PARAM] tmpdir:
- ファイルが作られるディレクトリです。このデフォルト値は、Dir.tmpdir の値となります。
- [PARAM] mode:
- ファイルのモードを定数の論理和で指定します。IO.open と同じ(Kernel.#openと同じ)ものが指定できます。
- [PARAM] options:
- ファイルのオプション引数を指定します。IO.open と同じものが指定できます。ただし、:permオプションは無視されます。
[SEE_ALSO] Tempfile.open
例:
require "tempfile" GC.disable path = "" Tempfile.create("foo") do |f| path = f.path p File.exist?(path) #=> true end p File.exist?(path) #=> false
new(basename = '', tempdir = nil, mode: 0, **options) -> Tempfile
[permalink][rdoc][edit]open(basename = '', tempdir = nil, mode: 0, **options) -> Tempfile
open(basename = '', tempdir = nil, mode: 0, **options) {|fp| ...} -> object
-
テンポラリファイルを作成し、それを表す Tempfile オブジェクトを生成して返します。ファイル名のプレフィクスには指定された basename が使われます。ファイルは指定された tempdir に作られます。 open にブロックを指定して呼び出した場合は、Tempfile オブジェクトを引数として ブロックを実行します。ブロックの実行が終了すると、ファイルは自動的に クローズされ、ブロックの値をかえします。 new にブロックを指定した場合は無視されます。
- [PARAM] basename:
- ファイル名のプレフィクスを文字列で指定します。文字列の配列を指定した場合、先頭の要素がファイル名のプレフィックス、次の要素がサフィックスとして使われます。
- [PARAM] tempdir:
- テンポラリファイルが作られるディレクトリです。このデフォルト値は、Dir.tmpdir の値となります。
- [PARAM] mode:
- ファイルのモードを定数の論理和で指定します。IO.open と同じ(Kernel.#openと同じ)ものが指定できます。
- [PARAM] options:
- ファイルのオプション引数を指定します。IO.open と同じものが指定できます。ただし、:permオプションは無視されます。
例:
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"
[SEE_ALSO] Tempfile.create
インスタンスメソッド
close(real = false) -> nil
[permalink][rdoc][edit]-
テンポラリファイルをクローズします。 real が偽ならば、テンポラリファイルはGCによって削除されます。そうでなければ、すぐに削除されます。
- [PARAM] real:
- false もしくはそれ以外を指定します。
require "tempfile" tf = Tempfile.open("bar") tf.close p FileTest.exist?(tf.path) # => true
close! -> nil
[permalink][rdoc][edit]-
テンポラリファイルをクローズし、すぐに削除します。
require "tempfile" tf = Tempfile.open("bar") path = tf.path tf.close! p FileTest.exist?(path) # => false
delete -> self
[permalink][rdoc][edit]unlink -> self
-
テンポラリファイルをクローズせずに、削除します。 UNIXライクなシステムでは、作成したテンポラリファイルが他のプログラムに使用される機会をなくすために、テンポラリファイルを作成しオープンした後、すぐに削除するということがしばしばおこなわれます。
require "tempfile" 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][edit]size -> Integer
-
テンポラリファイルのサイズを返します。
require "tempfile" tf = Tempfile.new("foo") tf.print("bar,ugo") p tf.size # => 7 tf.close p tf.size # => 7
open -> self
[permalink][rdoc][edit]-
クローズしたテンポラリファイルを再オープンします。 "r+" でオープンされるので、クローズ前の内容を再度読むことができます。
require "tempfile" 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][edit]-
テンポラリファイルのパス名を返します。
Tempfile#close! を実行後だった場合にはnilを返します。
require "tempfile" tf = Tempfile.new("hoo") p tf.path # => "/tmp/hoo.10596.0" tf.close! p tf.path # => nil