extend: Enumerable
ARGF を表すクラスです。
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 をバイナリモードにします。一度バイナリモードになった後は非バイナリモードに戻る事はできません。
バイナリモード下では以下のように動作します。
例:
# test1.png - 164B # test2.png - 128B # test1.png + test2.png = 292B # $ ruby test.rb test1.png test2.png ARGF.binmode ARGF.read.size # => 292
例:
# test1.png - 164B # test2.png - 128B # test1.png + test2.png = 292B # $ ruby test.rb test1.png test2.png ARGF.read.size # => 290
[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
[SEE_ALSO] ARGF.class#closed?
closed? -> bool
[permalink][rdoc]現在開いている処理対象のファイルがARGFがcloseされていればtrueを返します。
例:
# $ echo "foo" > foo # $ echo "bar" > bar # $ ruby argf.rb foo bar ARGF.filename # => "foo" ARGF.close # 複数のファイルを開いているので1度のARGF.closeではまた全てのファイルを閉じていないのでfalseになる ARGF.closed? # => false ARGF.filename # => "bar" ARGF.close # 2つのファイルを開いていたので2度目のARGF.closeで全てのファイルを閉じたためtrueになる ARGF.closed? # => 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#filename と ARGF.class#lineno を使用します。
例: 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 オブジェクトを生成して返します。
例:
# $ echo "line1\n" > test1.txt # $ echo "line2\n" > test2.txt # $ ruby test.rb test1.txt test2.txt # test.rb ARGF.each_char # => #<Enumerator: ARGF:each_char> ARGF.each_char{|e|p e} # => "l" # "i" # "n" # "e" # "1" # "\n" # "l" # "i" # "n" # "e" # "2" # "\n"
[SEE_ALSO] IO#each_char, IO#chars
each_codepoint { |c| ... } -> self
[permalink][rdoc]each_codepoint -> Enumerator
self の各コードポイントに対して繰り返しブロックを呼びだします。
ブロックの引数にはコードポイントを表す整数が渡されます。
ブロックを省略した場合には、Enumerator を返します。
例:
# $ echo "line1\n" > test1.txt # $ echo "line2\n" > test2.txt # $ ruby test.rb test1.txt test2.txt # test.rb ARGF.each_codepoint # => #<Enumerator: ARGF:each_codepoint> ARGF.each_codepoint{|e|print e, ","} # => 108,105,110,101,49,10,108,105,110,101,50,10,
eof -> bool
[permalink][rdoc]eof? -> bool
現在開いているファイルがEOFに達したらtrueを返します。そうでない場合は falseを返します。
$ echo "eof" | ruby argf.rb ARGF.eof? # => false 3.times { ARGF.readchar } ARGF.eof? # => false ARGF.readchar # => "\n" ARGF.eof? # => true
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
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 = $/, chomp: false) -> String | nil
[permalink][rdoc]gets(limit, chomp: false) -> String | nil
gets(rs, limit, chomp: false) -> String | nil
ARGFの現在位置から一行ずつ文字列として読み込みます。EOF に到達した時には nil を返します。
例:
# $ echo "line1\nline2\nline3\n\nline4\n" > test.txt # $ ruby test.rb test.txt # test.rb ARGF.gets # => "line1\n"
例:
# $ echo "line1\nline2\nline3\n\nline4\n" > test.txt # $ ruby test.rb test.txt # test.rb ARGF.gets(2) # => "li"
例:
# $ echo "line1\nline2\nline3\n\nline4\n" > test.txt # $ ruby test.rb test.txt # test.rb ARGF.gets("e") # => "line"
例:
# $ echo "line1\nline2\nline3\n\nline4\n" > test.txt # $ ruby test.rb test.txt # test.rb ARGF.gets("") # => "line1\nline2\nline3\n\n"
[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= で設定します。
例:
# $ echo "test" > test.txt # $ ruby -i.bak test.rb test.txt # $ cat test.txt # => "TEST" # $ cat test.txt.bak # => "test" # test.rb ARGF.inplace_mode # => ".bak" ARGF.each_line {|e|print e.upcase} # => "TEST"
例:
# $ echo "test" > test.txt # $ ruby test.rb test.txt # $ cat test.txt # => "test" # test.rb ARGF.inplace_mode # => nil ARGF.each_line {|e|print e.upcase} # => "TEST"
[SEE_ALSO] Rubyの起動/コマンドラインオプション, ARGF.class#inplace_mode=
inplace_mode=(ext)
[permalink][rdoc]ARGF/インプレースエディットモード時にバックアップファイルに付加する拡張子を設定します。ピリオドも含めて指定する必要があります。
バックアップを残さない場合は空文字列を指定します。この機能は Windows では使用出来ません。
設定が有効になるのは次のファイルの処理に移った時です。インプレースモードに入っていない場合はその時点でモードに入ります。
Ruby 起動時の -i オプションで設定することも出来ます。
$ 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 で設定します。
例:
# $ ruby -Eutf-8 test.rb # test.rb ARGF.internal_encoding # => #<Encoding:UTF-8> ARGF.set_encoding('utf-8','ascii') ARGF.internal_encoding # => #<Encoding:US-ASCII>
例:
ARGF.binmode ARGF.internal_encoding # => nil
[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 を使用してください。
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が開いているファイルのファイルポインタを指定位置に移動します。
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 と同じです。
printf(format, *arg) -> nil
[permalink][rdoc]C 言語の printf と同じように、format に従い引数を文字列に変換して処理対象のファイルに出力します。
ARGF/インプレースエディットモード時にのみ使用できます。また $stdout への代入の影響を受けません。それ以外は出力先を指定しない形式の Kernel.#printf と同じです。
putc(ch) -> object
[permalink][rdoc]文字 ch を処理対象のファイルに出力します。 ch を返します。
ARGF/インプレースエディットモード時にのみ使用できます。また $stdout への代入の影響を受けません。それ以外は Kernel.#putc と同じです。
puts(*arg) -> nil
[permalink][rdoc]引数と改行を順番に処理対象のファイルに出力します。引数がなければ改行のみを出力します。
ARGF/インプレースエディットモード時にのみ使用できます。また $stdout への代入の影響を受けません。それ以外は Kernel.#puts と同じです。
read(length = nil, str = nil) -> String | nil
[permalink][rdoc]ARGVに指定されたファイルを先頭のファイルからlengthバイト読み込み、その文字列を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, outbuf = nil, exception: true) -> String | Symbol | nil
[permalink][rdoc]処理中のファイルからノンブロッキングモードで最大 maxlen バイト読み込みます。詳しくは IO#read_nonblock を参照してください。
ARGF.class#read などとは違って複数ファイルを同時に読み込むことはありません。
[SEE_ALSO] ARGF.class#readpartial
readbyte -> Integer
[permalink][rdoc]自身から 1 バイトを読み込み整数として返します。既に EOF に達していれば EOFError が発生します。
$ 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を発生します。
$ 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 を発生します。
[SEE_ALSO] Kernel.#readline, ARGF.class#gets
readlines(rs = $/) -> Array
[permalink][rdoc]readlines(limit) -> Array
readlines(rs, limit) -> Array
to_a(rs = $/) -> Array
to_a(limit) -> Array
to_a(rs, limit) -> Array
ARGFの各行を配列に読み込んで返します。rsがnilの場合は要素に各ファイルをすべて読み込んだ配列を返します。
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 などとは違って複数ファイルを同時に読み込むことはありません。
[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 を返します。
[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 を参照してください。
[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/インプレースエディットモード時にのみ使用できます。
[SEE_ALSO] ARGF.class#to_write_io