要約
テンポラリファイルを操作するためのクラスです。
- テンポラリファイルを作成します。 ファイルは "w+" モードで "basename.pid.n" という名前になります。
- Tempfile オブジェクトはFileオブジェクトと同じように使うことができます。
- Tempfile#close(true) により、作成したテンポラリファイルは削除されます。
- スクリプトが終了するときにも削除されます。
- Tempfile#openにより、テンポラリファイルを再オープンすることができます。
- テンポラリファイルのモードは 0600 です。
目次
継承しているメソッド
- Fileから継承している特異メソッド
-
- absolute_path
- atime
- basename
- blockdev?
- chardev?
- chmod
- chown
- ctime
- delete
- directory?
- dirname
- executable?
- executable_real?
- exist?
- exists?
- expand_path
- extname
- file?
- fnmatch
- fnmatch?
- ftype
- grpowned?
- identical?
- join
- lchmod
- lchown
- link
- lstat
- mtime
- owned?
- path
- pipe?
- readable?
- readable_real?
- readlink
- realdirpath
- realpath
- rename
- setgid?
- setuid?
- size
- size?
- socket?
- split
- stat
- sticky?
- symlink
- symlink?
- truncate
- umask
- unlink
- utime
- world_readable?
- world_writable?
- writable?
- writable_real?
- zero?
- IOから継承している特異メソッド
- Fileから継承しているメソッド
- IOから継承しているメソッド
-
- <<
- advise
- autoclose=
- autoclose?
- binmode
- binmode?
- bytes
- chars
- clone
- close_on_exec=
- close_on_exec?
- close_read
- close_write
- closed?
- codepoints
- dup
- each
- each_byte
- each_char
- each_codepoint
- each_line
- eof
- eof?
- external_encoding
- fcntl
- fdatasync
- fileno
- flush
- fsync
- getbyte
- getc
- gets
- internal_encoding
- ioctl
- isatty
- lineno
- lineno=
- lines
- pid
- pos
- pos=
- printf
- putc
- puts
- read
- read_nonblock
- readbyte
- readchar
- readline
- readlines
- readpartial
- reopen
- rewind
- seek
- set_encoding
- stat
- sync
- sync=
- sysread
- sysseek
- syswrite
- tell
- to_i
- to_io
- tty?
- ungetbyte
- ungetc
- write
- write_nonblock
- Enumerableから継承しているメソッド
-
- all?
- any?
- chunk
- collect
- collect_concat
- count
- cycle
- detect
- drop
- drop_while
- each_cons
- each_entry
- each_slice
- each_with_index
- each_with_object
- entries
- find
- find_all
- find_index
- first
- flat_map
- grep
- group_by
- include?
- inject
- map
- max
- max_by
- member?
- min
- min_by
- minmax
- minmax_by
- none?
- one?
- partition
- reduce
- reject
- reverse_each
- select
- slice_before
- sort
- sort_by
- take
- take_while
- to_a
- zip
特異メソッド
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 にブロックを指定した場合は無視されます。
- [PARAM] basename:
- ファイル名のプレフィクスを文字列で指定します。文字列の配列を指定した場合、先頭の要素がファイル名のプレフィックス、次の要素がサフィックスとして使われます。
- [PARAM] tempdir:
- テンポラリファイルが作られるディレクトリです。このデフォルト値は、Dir.tmpdir の値となります。
例:
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によって削除されます。そうでなければ、すぐに削除されます。
- [PARAM] real:
- false もしくはそれ以外を指定します。
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