Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > ARGFオブジェクト

object ARGF

クラスの継承リスト: ARGF
extend: Enumerable

要約

スクリプトに指定した引数 (Kernel::ARGV を参照) をファイル名とみなして、 それらのファイルを連結した 1 つの仮想ファイルを表すオブジェクトです。 ARGV が空なら標準入力を対象とします。 ARGV を変更すればこのオブジェクトの動作に影響します。

while line = ARGF.gets
  ....
end

は、

while argv = ARGV.shift
  File.open(argv) {|file|
    while line = file.gets
      ....
    end
  }
end

のように動作します。

ARGF を処理するごとに ARGV の要素は一つずつ取り除かれます。 最後まで ARGF を読み込んだ後、再度 ARGF から内容を読むと (ARGV が空なので)標準入力からの読み込みとなります。

ARGV.replace %w(/tmp/foo /tmp/bar)
ARGF.each {|line|
    # 処理中の ARGV の内容を表示
    p [ARGF.filename, ARGV]
    ARGF.skip
}
    # => ["/tmp/foo", ["/tmp/bar"]]
    #    ["/tmp/bar", []]
# 最後まで読んだ後 (ARGV が空) の動作
p ARGF.gets      # => nil
p ARGF.filename  # => "-"

Kernel.#gets など一部の組み込み関数は ARGF.gets などこのオブジェクトをレシーバとしたメソッドの省略形です。

特異メソッド

定義 説明
binmode -> self

IO#binmodeを参照

bytes -> Enumerator
each_char {|c| ... } -> self
chars {|c| ... } -> self
each_char -> Enumerator
chars -> Enumerator

レシーバに含まれる文字を一文字つつブロックに渡して評価します。

close -> self

処理対象のファイルをクローズします。開くファイルが残っている場合は次のファイルをオープンします。

closed? -> bool

ARGFがcloseされていればtrueを返します。

each(rs = $/) {|line| ... } -> self
each_line(rs = $/) {|line| ... } -> self
each(rs = $/) -> Enumerator
each_line(rs = $/) -> Enumerator

ARGFの現在位置から一行ずつ文字列として読み込みます。

each_byte {|char| ...} -> self
each_byte -> Enumerator
eof -> bool
eof? -> bool

現在開いているファイルがeofに達したらtrueを返します。そうでない場合はfalseを返します。

file -> IO

処理対象の File オブジェクト(または IO オブジェクト)を 返します。

filename -> String
path -> String

処理対象のファイル名を返します。 標準入力に対しては - を返します。 組み込み変数 $FILENAME と同じです。

fileno -> Integer
to_i -> Integer

現在オープンしているファイルのファイル記述子を表す整数を返します。

getbyte -> Integer | nil

自身から 1 バイトを読み込み整数として返します。 既に EOF に達していれば nil を返します。

getc -> Integer | nil

ARGFから 1 文字読み込んで、その文字に対応する Fixnum を返します。EOF に到達した時には nil を返します。

gets -> String | nil

ARGFの現在位置から一行ずつ文字列として読み込みます。EOF に到達した時には nil を返します。

lineno -> Integer

全引数ファイルを一つのファイルとみなしたときの現在の行番号を返します。 個々の引数ファイル毎の行番号を得るには ARGF.file.lineno とします。

lineno=(number)

全引数ファイルを一つのファイルとみなしたときの現在の行番号を number に書き換えます。

lines(rs = $/) -> Enumerator

自身を 1 行ずつイテレートするような Enumerator オブジェクトを生成して返します。

pos -> Integer
tell -> Integer

ARGFが現在開いているファイルのファイルポインタの現在の位置を整数で返します。

pos=(n)

ARGFが開いているファイルのファイルポインタを指定位置に移動します。

read(length = nil, str = nil) -> String

ARGVに指定されたファイルを先頭のファイルからlengthバイト読み込み、 その文字列をstrに出力します。読み込んだ文字列を返します。

readbyte -> Integer

自身から 1 バイトを読み込み整数として返します。 既に EOF に達していれば EOFError が発生します。

readchar -> Integer

ARGFから 1 文字読み込んで、その文字に対応する Fixnum を返します。EOF に到達した時には EOFErrorを発生します。

readline -> String

ARGFの現在位置から一行ずつ文字列として読み込みます。EOF に到達した時にはEOFErrorを発生します。

readlines(rs = $/) -> [String]
to_a(rs = $/) -> [String]

ARGFの各行を配列に読み込んで返します。rsがnilの場合は要素に各ファイルをすべて読み込んだ配列を返します。

readpartial(length, str = nil)

IO#readpartialを参照

rewind -> 0

ARGFが現在開いているファイルのファイルポインタを先頭に戻します。

seek(offset, whence = IO::SEEK_SET) -> 0

ARGFが現在開いているファイルのファイルポインタを whence の位置から offset だけ移動させます。 offset 位置への移動が成功すれば 0 を返します。

skip -> self

処理対象のファイルをクローズします。 次回の読み込みは次の引数が処理対象になります。 self を返します。

to_io -> IO

ARGFが現在開いているファイルのFile、またはIOオブジェクトを返します

to_s -> String

常に文字列 "ARGF" を返します。