Ruby 2.1.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > ARGF.classクラス

class ARGF.class

クラスの継承リスト: ARGF.class < Object < Kernel < BasicObject
extend: Enumerable

要約

ARGF を表すクラスです。

目次

インスタンスメソッド
argv binmode binmode? bytes chars close closed? codepoints each each_line each_byte each_char each_codepoint eof eof? external_encoding file filename path fileno to_i getbyte getc gets inplace_mode inplace_mode= inspect to_s internal_encoding lineno lineno= lines pos tell pos= print printf putc puts read read_nonblock readbyte readchar readline readlines to_a readpartial rewind seek set_encoding skip to_io to_write_io write

インスタンスメソッド

argv -> Array[permalink][rdoc]

Kernel::ARGV を返します。

ARGF が ARGV をどう扱うかについては ARGF を参照してください。

例:

$ ruby argf.rb -v glark.txt

ARGF.argv   #=> ["-v", "glark.txt"]
binmode -> self[permalink][rdoc]

self をバイナリモードにします。一度バイナリモードになった後は非バイナリ モードに戻る事はできません。

バイナリモード下では以下のように動作します。

[SEE_ALSO] IO#binmode, ARGF.class#binmode?

binmode? -> bool[permalink][rdoc]

ARGF の入力ストリームがバイナリモードなら true を返します。 そうでない場合、false を返します。

バイナリモードにするためには ARGF.class#binmode を使用します。

ARGF.binmode? # => false
ARGF.binmode
ARGF.binmode? # => true

[SEE_ALSO] IO#binmode?, ARGF.class#binmode

bytes { |byte| ... } -> self[permalink][rdoc]
bytes -> Enumerator

このメソッドは obsolete です。 代わりに ARGF.class#each_byte を使用してください。 使用すると警告メッセージが表示されます。

chars { |c| ... } -> self[permalink][rdoc]
chars -> Enumerator

このメソッドは obsolete です。 代わりに ARGF.class#each_char を使用してください。 使用すると警告メッセージが表示されます。

close -> self[permalink][rdoc]

現在開いている処理対象のファイルをクローズします。開くファイルが残って いる場合は次のファイルをオープンします。 ただし、標準入力はクローズされません。

$ echo "foo" > foo
$ echo "bar" > bar

$ ruby argf.rb foo bar

ARGF.filename  # => "foo"
ARGF.close
ARGF.filename  # => "bar"
ARGF.close
ARGF.close     # => closed stream (IOError)
[EXCEPTION] IOError:
処理対象のファイルが既にクローズされていた場合に発生します。

[SEE_ALSO] ARGF.class#closed?

closed? -> bool[permalink][rdoc]

現在開いている処理対象のファイルがARGFがcloseされていればtrueを返します。

[SEE_ALSO] IO#closed?, ARGF.class#close

codepoints { |c| ... } -> self[permalink][rdoc]
codepoints -> Enumerator

このメソッドは obsolete です。 代わりに ARGF.class#each_codepoint を使用してください。 使用すると警告メッセージが表示されます。

each(rs = $/) { |line| ... } -> self[permalink][rdoc]
each_line(rs = $/) { |line| ... } -> self
each(rs = $/, limit) { |line| ... } -> self
each_line(rs = $/, limit) { |line| ... } -> self
each(rs = $/) -> Enumerator
each_line(rs = $/) -> Enumerator
each(rs = $/, limit) -> Enumerator
each_line(rs = $/, limit) -> Enumerator

ARGFの現在位置から 1 行ずつ文字列として読み込み、それを引数として与えら れたブロックを実行します。

ブロックが与えられなかった場合は、Enumerator オブジェクトを生成し て返します。

このメソッドはスクリプトに指定した引数(Object::ARGV を参照) をファ イル名とみなして、それらのファイルを連結した 1 つの仮想ファイルを表すオ ブジェクトです。そのため、最初のファイルを最後まで読んだ後は次のファイ ルの内容を返します。現在の行についてファイル名や行数を得るには ARGF.class#filenameARGF.class#lineno を使用します。

[PARAM] rs:
行の区切りを文字列で指定します。nil を指定すると行区切りなし とみなします。空文字列 "" を指定すると連続する改行を行の区切 りとみなします(パラグラフモード)。
[PARAM] limit:
各行の最大の読み込みバイト数

例: ARGFの各ファイル名(最初に1回のみ)、行番号、内容を表示

ARGF.each_line do |line|
  puts ARGF.filename if ARGF.lineno == 1
  puts "#{ARGF.lineno}: #{line}"
end

[SEE_ALSO] IO#each, IO#each_line

each_byte { |byte| ...} -> self[permalink][rdoc]
each_byte -> Enumerator

ARGF の現在位置から 1 バイトずつ読み込み、それを整数として与え、ブロックを実行します。 ブロック引数byteは0..255のいずれかの整数です。

このメソッドはスクリプトに指定した引数(Object::ARGV を参照) をファ イル名とみなして、それらのファイルを連結した 1 つの仮想ファイルを表すオ ブジェクトです。そのため、最初のファイルを最後まで読んだ後は次のファイ ルの内容を返します。現在位置の1バイトについてファイル名を得るには ARGF.class#filename を使用します。

ブロックが与えられなかった場合は、Enumerator オブジェクトを生成して返します。

例:

ARGF.each_byte.to_a  # => [35, 32, ... 95, 10]

[SEE_ALSO] IO#each_byte

each_char { |c| ... } -> self[permalink][rdoc]
each_char -> Enumerator

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

このメソッドはスクリプトに指定した引数(Object::ARGV を参照) をファ イル名とみなして、それらのファイルを連結した 1 つの仮想ファイルを表すオ ブジェクトです。そのため、最初のファイルを最後まで読んだ後は次のファイ ルの内容を返します。現在位置の1文字についてファイル名を得るには ARGF.class#filename を使用します。

ブロックが与えられなかった場合は、Enumerator オブジェクトを生成し て返します。

[SEE_ALSO] IO#each_char, IO#chars

each_codepoint { |c| ... } -> self[permalink][rdoc]
each_codepoint -> Enumerator

self の各コードポイントに対して繰り返しブロックを呼びだします。

ブロックの引数にはコードポイントを表す整数が渡されます。

ブロックを省略した場合には、Enumerator を返します。

eof -> bool[permalink][rdoc]
eof? -> bool

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

[EXCEPTION] IOError:
ファイルがopenされていない場合に発生します。
$ echo "eof" | ruby argf.rb

ARGF.eof?                 # => false
3.times { ARGF.readchar }
ARGF.eof?                 # => false
ARGF.readchar             # => "\n"
ARGF.eof?                 # => true

[SEE_ALSO] IO#eof, IO#eof?

external_encoding -> Encoding[permalink][rdoc]

ARGF が処理するファイルに対する外部エンコーディングを返します。 デフォルトは Encoding.default_external です。

ARGF.class#set_encoding で設定します。

例:

ARGF.external_encoding  # =>  #<Encoding:UTF-8>

[SEE_ALSO] IO, ARGF.class#internal_encoding

file -> IO[permalink][rdoc]

現在開いている処理対象の File オブジェクト(または IO オブジェ クト)を返します。

$ echo "foo" > foo
$ echo "bar" > bar

$ ruby argf.rb foo bar

ARGF.file      # => #<File:foo>
ARGF.read(5)   # => "foo\nb"
ARGF.file      # => #<File:bar>

ARGFが現在開いている処理対象が標準入力の場合、$stdin を返します。

filename -> String[permalink][rdoc]
path -> String

現在開いている処理対象のファイル名を返します。

標準入力に対しては - を返します。 組み込み変数 $FILENAME と同じです。

$ echo "foo" > foo
$ echo "bar" > bar
$ echo "glark" > glark

$ ruby argf.rb foo bar glark

ARGF.filename # => "foo"
ARGF.read(5)  # => "foo\nb"
ARGF.filename # => "bar"
ARGF.skip
ARGF.filename # => "glark"
fileno -> Integer[permalink][rdoc]
to_i -> Integer

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

ARGF.fileno    # => 3
[EXCEPTION] ArgumentError:
現在開いているファイルがない場合に発生します。
getbyte -> Integer | nil[permalink][rdoc]

self から 1 バイト(0..255)を読み込み整数として返します。 既に EOF に達していれば nil を返します。

ARGF はスクリプトに指定した引数(Object::ARGV を参照) をファイル名 とみなして、それらのファイルを連結した 1 つの仮想ファイルを表すオブジェ クトです。そのため、最初のファイルを最後まで読んだ後は次のファイルの内 容を返します。

$ echo "foo" > file1
$ echo "bar" > file2
$ ruby argf.rb file1 file2

ARGF.getbyte # => 102
ARGF.getbyte # => 111
ARGF.getbyte # => 111
ARGF.getbyte # => 10
ARGF.getbyte # => 98
ARGF.getbyte # => 97
ARGF.getbyte # => 114
ARGF.getbyte # => 10
ARGF.getbyte # => nil

[SEE_ALSO] ARGF.class#getc, ARGF.class#gets

getc -> String | nil[permalink][rdoc]

self から 1 文字読み込んで返します。EOF に到達した時には nil を返します。

ARGF はスクリプトに指定した引数(Object::ARGV を参照) をファイル名 とみなして、それらのファイルを連結した 1 つの仮想ファイルを表すオブジェ クトです。そのため、最初のファイルを最後まで読んだ後は次のファイルの内 容を返します。

$ echo "foo" > file1
$ echo "bar" > file2
$ ruby argf.rb file1 file2

ARGF.getc # => "f"
ARGF.getc # => "o"
ARGF.getc # => "o"
ARGF.getc # => "\n"
ARGF.getc # => "b"
ARGF.getc # => "a"
ARGF.getc # => "r"
ARGF.getc # => "\n"
ARGF.getc # => nil

[SEE_ALSO] ARGF.class#getbyte, ARGF.class#gets

gets(rs = $/) -> String | nil[permalink][rdoc]
gets(limit) -> String | nil
gets(rs, limit) -> String | nil

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

[PARAM] rs:
行の区切りを文字列で指定します。rs に nil を指定すると行区切 りなしとみなします。空文字列 "" を指定すると連続する改行を行 の区切りとみなします(パラグラフモード)。
[PARAM] limit:
最大の読み込みバイト数

[SEE_ALSO] Kernel.#gets, IO#gets, ARGF.class#getbyte, ARGF.class#getc

inplace_mode -> String | nil[permalink][rdoc]

ARGF/インプレースエディットモード で書き換えるファイルのバックアップに付加される拡 張子を返します。拡張子が設定されていない場合は空文字列を返します。イン プレースモードでない場合は nil を返します。

Ruby 起動時の -i オプション や ARGF.class#inplace_mode= で設定します。

[SEE_ALSO] Rubyの起動/コマンドラインオプション, ARGF.class#inplace_mode=

inplace_mode=(ext)[permalink][rdoc]

ARGF/インプレースエディットモード時にバックアップファイルに付加する拡張子を設定します。 ピリオドも含めて指定する必要があります。

バックアップを残さない場合は空文字列を指定します。 この機能は Windows では使用出来ません。

設定が有効になるのは次のファイルの処理に移った時です。 インプレースモードに入っていない場合はその時点でモードに入ります。

Ruby 起動時の -i オプションで設定することも出来ます。

[PARAM] ext:
インプレースモード時にバックアップファイルに付加する拡張子を 文字列で指定します。 ピリオドも含める必要があります。
$ ruby argf.rb file.txt

---- argf.rb ----
# 引数のファイル中の各行の最初の "foo" を "bar" で置き換える
ARGF.inplace_mode = '.bak'
ARGF.lines do |line|
  print line.sub("foo","bar")
end


---- -i オプションを使う場合 ----
$ ruby -i.bak -p -e '$_.sub!("foo","bar")' file.txt

---- -i オプションを使う場合その2 ----
$ ruby -i.bak -n -e 'print $_.sub("foo","bar")' file.txt

[SEE_ALSO] Rubyの起動/コマンドラインオプション, ARGF.class#inplace_mode

to_s -> String[permalink][rdoc]
inspect -> String

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

internal_encoding -> Encoding | nil[permalink][rdoc]

ARGF から読み込んだ文字列の内部エンコーディングを返します。 内部エンコーディングが指定されていない場合は nil を返します。

まだ読み込み処理を始めていない場合は Encoding.default_external を返します。

ARGF.class#set_encoding で設定します。

[SEE_ALSO] IO, ARGF.class#external_encoding

lineno -> Integer[permalink][rdoc]

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

この値を書き換えたい場合は ARGF.class#lineno= を使用してください。

ARGF.lineno   # => 0
ARGF.readline # => "This is line 1\n"
ARGF.lineno   # => 1

[SEE_ALSO] ARGF.class#lineno=

lineno=(number)[permalink][rdoc]

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

この値を読み込みたい場合は ARGF.class#lineno を使用してください。

[PARAM] number:
更新後の行番号を指定する
ARGF.lineno      # => 0
ARGF.readline    # => "This is line 1\n"
ARGF.lineno      # => 1
ARGF.lineno = 0  # => 0
ARGF.lineno      # => 0

[SEE_ALSO] ARGF.class#lineno

lines(rs = $/) { |line| ... } -> self[permalink][rdoc]
lines(limit) { |line| ... } -> self
lines(rs, limit) { |line| ... } -> self
lines(rs = $/) -> Enumerator
lines(limit) -> Enumerator
lines(rs, limit) -> Enumerator

このメソッドは obsolete です。 代わりに ARGF.class#each_line を使用してください。 使用すると警告メッセージが表示されます。

[SEE_ALSO] $/, ARGF.class#each_line

pos -> Integer[permalink][rdoc]
tell -> Integer

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

ARGF.pos    # => 0
ARGF.gets   # => "This is line one\n"
ARGF.pos    # => 17

[SEE_ALSO] IO#pos, IO#tell, ARGF.class#pos=

pos=(n)[permalink][rdoc]

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

[PARAM] n:
先頭からのオフセットをバイト単位の整数で指定します。
ARGF.pos = 17
ARGF.gets   # => "This is line two\n"

[SEE_ALSO] IO#pos=, ARGF.class#pos

print(*arg) -> nil[permalink][rdoc]

引数を順に処理対象のファイルに出力します。

ARGF/インプレースエディットモード時にのみ使用できます。 また $stdout への代入の影響を受けません。 それ以外は Kernel.#print と同じです。

[PARAM] arg:
出力するオブジェクトを任意個指定します。
printf(format, *arg) -> nil[permalink][rdoc]

C 言語の printf と同じように、format に従い引数を 文字列に変換して処理対象のファイルに出力します。

ARGF/インプレースエディットモード時にのみ使用できます。 また $stdout への代入の影響を受けません。 それ以外は出力先を指定しない形式の Kernel.#printf と同じです。

[PARAM] format:
フォーマット文字列です。
[PARAM] arg:
フォーマットされる引数です。
putc(ch) -> object[permalink][rdoc]

文字 ch を処理対象のファイルに出力します。 ch を返します。

ARGF/インプレースエディットモード時にのみ使用できます。 また $stdout への代入の影響を受けません。 それ以外は Kernel.#putc と同じです。

[PARAM] ch:
出力する文字を String オブジェクトで指定します。
puts(*arg) -> nil[permalink][rdoc]

引数と改行を順番に処理対象のファイルに出力します。 引数がなければ改行のみを出力します。

ARGF/インプレースエディットモード時にのみ使用できます。 また $stdout への代入の影響を受けません。 それ以外は Kernel.#puts と同じです。

[PARAM] arg:
出力するオブジェクトを任意個指定します。
read(length = nil, str = nil) -> String | nil[permalink][rdoc]

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

[PARAM] length:
読み込むバイト数を指定します nilの場合はARGVのすべてのファ イルを読み込みます。
[PARAM] str:
出力先の文字列。内容は上書きされます。
$ echo "small" > small.txt
$ echo "large" > large.txt
$ ruby glark.rb small.txt large.txt

ARGF.read      # => "small\nlarge"
ARGF.read(200) # => "small\nlarge"
ARGF.read(2)   # => "sm"
ARGF.read(0)   # => ""

[SEE_ALSO] IO#read

read_nonblock(maxlen) -> String[permalink][rdoc]
read_nonblock(maxlen, outbuf) -> String

処理中のファイルからノンブロッキングモードで最大 maxlen バイト読み込みます。 第二の形式では読み込んだデータを outbuf に破壊的に格納してそれを返します。 詳しくは IO#read_nonblock を参照してください。

ARGF.class#read などとは違って複数ファイルを同時に読み込むことはありません。

[PARAM] maxlen:
読み込む長さの上限を整数で指定します。
[PARAM] outbuf:
読み込んだデータを格納する String オブジェクトを指定します。

[SEE_ALSO] ARGF.class#readpartial

readbyte -> Integer[permalink][rdoc]

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

[EXCEPTION] EOFError:
既に EOF に達している場合に発生します。
$ echo "foo" > file
$ ruby argf.rb file

ARGF.readbyte  # => 102
ARGF.readbyte  # => 111
ARGF.readbyte  # => 111
ARGF.readbyte  # => 10
ARGF.readbyte  # => end of file reached (EOFError)
readchar -> Integer[permalink][rdoc]

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

[EXCEPTION] EOFError:
EOFに達した時発生する
$ echo "foo" > file
$ ruby argf.rb file

ARGF.readchar  # => "f"
ARGF.readchar  # => "o"
ARGF.readchar  # => "o"
ARGF.readchar  # => "\n"
ARGF.readchar  # => end of file reached (EOFError)

[SEE_ALSO] ARGF.class#getc

readline(rs = $/) -> String[permalink][rdoc]
readline(limit) -> String
readline(rs, limit) -> String

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

[PARAM] rs:
行の区切りを文字列で指定します。rs に nil を指定すると行区切 りなしとみなします。空文字列 "" を指定すると連続する改行を行 の区切りとみなします(パラグラフモード)。
[PARAM] limit:
最大の読み込みバイト数
[EXCEPTION] EOFError:
EOFに達したら発生する

[SEE_ALSO] Kernel.#readline, ARGF.class#gets

readlines(rs = $/) { |line| ... } -> self[permalink][rdoc]
readlines(limit) { |line| ... } -> self
readlines(rs, limit) { |line| ... } -> self
to_a(rs = $/) { |line| ... } -> self
to_a(limit) { |line| ... } -> self
to_a(rs, limit) { |line| ... } -> self

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

[PARAM] rs:
行区切り文字
[PARAM] limit:
最大の読み込みバイト数
lines = ARGF.readlines
lines[0]                # => "This is line one\n"

[SEE_ALSO] $/, Kernel.#readlines, IO#readlines

readpartial(maxlen, outbuf = nil) -> String[permalink][rdoc]

IO#readpartialを参照。ARGF.class#read などとは違って複数ファ イルを同時に読み込むことはありません。

[PARAM] maxlen:
読み込む長さの上限を整数で指定します。
[PARAM] outbuf:
読み込んだデータを格納する String オブジェクトを指定します。

[SEE_ALSO] IO#readpartial, ARGF.class#read_nonblock

rewind -> 0[permalink][rdoc]

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

ARGF.readline   # => "This is line one\n"
ARGF.rewind     # => 0
ARGF.lineno     # => 0
ARGF.readline   # => "This is line one\n"
seek(offset, whence = IO::SEEK_SET) -> 0[permalink][rdoc]

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

[PARAM] offset:
ファイルポインタを移動させるオフセットを整数で指定します。
[PARAM] whence:
IO#seek を参照。

[SEE_ALSO] IO#seek

set_encoding(ext_enc) -> self[permalink][rdoc]
set_encoding(enc_str, options = {}) -> self
set_encoding(ext_enc, int_enc, options = {}) -> self

ARGF の外部/内部エンコーディングを設定します。 次以降に処理するファイルにも同じ設定が適用されます。

外部エンコーディングは ARGF を介して読み込むファイルの、 内部エンコーディングは読み込んだ文字列のエンコーディングです。

詳しくは IO#set_encoding を参照してください。

[PARAM] enc_str:
外部/内部エンコーディングを"A:B" のようにコロンで 区切って指定します。
[PARAM] ext_enc:
外部エンコーディングを表す文字列か Encoding オブジェクトを指定します。
[PARAM] int_enc:
内部エンコーディングを表す文字列か Encoding オブジェクトを指定します。
[PARAM] options:
エンコーディング変換のオプション。 String#encode と同じものが指定できます。

[SEE_ALSO] String#encode

skip -> self[permalink][rdoc]

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

$ echo "foo" > foo
$ echo "bar" > bar

$ ruby argf.rb foo bar
ARGF.filename  # => "foo"
ARGF.skip
ARGF.filename  # => "bar"
to_io -> IO[permalink][rdoc]

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

ARGF.to_io    # => #<File:glark.txt>
ARGF.to_io    # => #<IO:<STDIN>>

[SEE_ALSO] ARGF.class#file, ARGF.class#to_write_io

to_write_io -> IO[permalink][rdoc]

処理対象のファイルへの書き出し用 IO オブジェクトを返します。

ARGF/インプレースエディットモード時以外は読み込み用の IO オブジェクトを返します。 このため ARGF.class#write などの書き出し用メソッドを呼ぶと IOError が発生します。

write(str) -> Integer[permalink][rdoc]

処理対象のファイルに対して str を出力します。 str が文字列でなければ to_s による文字列化を試みます。 実際に出力できたバイト数を返します。

ARGF/インプレースエディットモード時にのみ使用できます。

[PARAM] str:
出力する文字列を指定します。

[SEE_ALSO] ARGF.class#to_write_io