IO
クラスは基本的な入出力機能を実装します.
Object
Enumerable
foreach(path[, rs])
pathで指定されたファイルの各行に対して繰り返しま す.ちょうど以下のような働きをします.
port = open(path) begin port.each_line { ... } ensure port.close end
行の区切りは引数rsで指定した文字列になります.
rsのデフォルト値はシステム変数
$/
の値
です.
new(fd[,mode])
整数fdで指定したファイルディスクリプタに対応する ストリームを生成します.
popen(command [, mode])
commandをサブプロセスとして実行し,そのプロセスの
標準入出力との間にパイプラインを確立します.mode
はオープンするIOポートのモードを指定するもので,
"r"
, "r+"
, "w"
,
"w+"
, "a"
, "a+"
のいず
れかです(省略された時のデフォルトは"r").
コマンド名が"-"
の時,Rubyはforkを行い,自分自身
の分身(子プロセス)とのパイプラインを生成します.
pipe
pipe(2)を実行して,相互につながった2つの
IO
オブジェクトを要素とす
る配列を返します.最初の要素が読み込み側で,次の要素が書き込
み側です.
readlines(path[, rs])
pathで指定されたファイルを全て読み込んで,その各 行を要素としてもつ配列を返します.ちょうど以下のような働きを します.
port = open(path) begin port.readlines ensure port.close end
行の区切りは引数rsで指定した文字列になります.
rsのデフォルト値はシステム変数
$/
の値
です.
select(reads[, writes[, excepts[, timeout]]])
`select(2)'を実行します. reads/writes/execptsには入 力待ちするIO(またはそのサブクラス)の インスタンスの配列をわたします.
timeoutは整数,浮動小数点数,
Time
, または
nil
を指定します.nil
を指定した時
にはIOがレディ状態になるまで待ち続けます.
戻り値はtimeoutした時にはnil
を,そう
でないときは3要素の配列を返し,その各要素が入力/出力/例外待
ちのオブジェクトの配列です(指定した配列のサブセット).
self << object
objectを出力します.objectが文字列でな
い時にはメソッドto_s
を用いて文字列に変換します.
self
を戻り値とするので,以下のような
<<
の連鎖を使うことができます.
$stdout << 1 << " is a " << Fixnum << "\n"
binmode
ストリームをバイナリモードにします.MSDOSなどバイナリモードの 存在するOSでのみ有効です.バイナリモードから通常のモードに戻 す方法は再オープンしかありません.
close
入出力ポートをクローズします.以後のこのポートに対する入出力 操作は例外を発生します.ガーベージコレクトの際にはクローズさ れていないIOポートはクローズされます.
closed?
ポートがクローズされている時に真を返します.
each([rs]) {|line|...}
each_line([rs]) {|line|...}
IOポートから1行ずつ読み込んで繰り返すイテレータ.IOポートは
リードモードでオープンされている必要があります
(open
参照).
行の区切りは引数rsで指定した文字列になります.
rsのデフォルト値はシステム変数
$/
の値
です.
each_byte {|ch|...}
IOポートから1バイトずつ読み込みます.IOポートは
リードモードでオープンされている必要があります
(open
参照).
eof
eof?
ストリームがファイルの終端に達した場合真を返します.
fcntl(cmd[, arg])
IOに対してシステムコール fcntl
を実行します.
機能の詳細はfcntl(2)を参照してください.
argが整数の時にはその値を,文字列の場合にはpackした構造体だ とみなしてfcntl(2)に渡します.argの 省略時の値は0です.
fileno
to_i
ファイル記述子の番号を返します.
flush
IOポートの内部バッファをフラッシュします.
getc
IOポートから1文字読み込んで,その文字に対応するFixnumを返します.
EOFに到達した時にはnil
を返します.
gets([rs])
一行読み込んで,読み込みに成功した時にはその文字列を返します.
ファイルの終りに到達した時にはnil
を返します.
each
と同じように動作します
が,こちらは1行返すだけで繰り返しません.
行の区切りは引数rsで指定した文字列になります.
rsのデフォルト値はシステム変数
$/
の値
です.
gets
は読み込んだ文字列を変数$_
にセッ
トします.
ioctl(cmd[, arg])
IOに対してシステムコール ioctl
を実行します.
機能の詳細はioctl(2)を参照してください.
argが整数の時にはその値を,文字列の場合にはpackした構造体だ とみなしてioctl(2)に渡します.argの 省略時の値は0です.
isatty
tty?
入出力ポートがttyに結合している時,真を返します.
lineno
現在の行番号を返します.
lineno= number
行番号をセットします.
pos
ファイルポインタの位置を返します.
pos= pos
ファイルポインタを指定位置に移動します.
print arg...
引数をIOポートに順に出力します.
printf(format, arg...)
C
言語のprintf
と同じように,
formatに従い引数を文字列に変換して,IOポートに出
力します.
putc(ch)
文字chを出力します.
puts(obj...)
各objを出力した後,改行します.
read [length]
lengthバイト読み込んで,その文字列を返します.
lengthが省略された時には,EOF
までの
全てのデータを読み込みます.
EOF
でnil
を返します.
readchar
getc
と同様に1文字読み込みます
が,EOFに到達した時に例外EOFError
を発生させます.
readline([rs])
gets
と同様に1行読み込みます
が,EOFに到達した時に例外EOFError
を発生させます.
行の区切りは引数rsで指定した文字列になります.
rsのデフォルト値はシステム変数
$/
の値
です.
readline
はgets
同様読み込んだ文字列
を変数$_
にセットします.
readlines([rs])
ファイルを全て読み込んで,その各行を要素としてもつ配列を返し ます.
行の区切りは引数rsで指定した文字列になります.
rsのデフォルト値はシステム変数
$/
の値
です.
reopen(io)
自身をioに繋ぎ換えます.クラスもioに等 しくなります(危険).
rewind
ファイルポインタを先頭に移動します.
seek(offset, whence)
ファイルポインタをoffsetだけ移動させます. whenceの値が0の時にはファイルの先頭から,1の時には現在の ファイルポインタから,2の時にはEOFからoffsetバイトだ け移動します.
stat
ファイルのステータスを含むStat
構造体を返します.Stat
構造体
のメンバは以下の通りです.
dev # デバイス番号(ファイルシステム) ino # i-node番号 mode # ファイルモード nlink # ハードリンクの数 uid # オーナーのユーザID gid # オーナーのグループID rdev # デバイスタイプ(スペシャルファイルのみ) size # ファイルサイズ(バイト単位) blksize # 望ましいI/Oのブロックサイズ blocks # 割り当てられているブロック数 atime # 最終アクセス時間 mtime # 最終更新時間 ctime # 最終i-node変更時間
より詳細はstat(2)してください.システムによって サポートされていないメンバには0が入っています.
sync
現在の出力同期モードを真偽値で返します.同期モードが真の時は 出力関数の呼出毎にバッファがフラッシュされます.
sync= newstate
出力同期モードを設定します.
sysread(length)
`read(2)'を用いて入力を行ない,入力されたデータ
を含む文字列を返します.ファイルの終りに到達した時には例外
EOFError
を発生させます.`stdio'を
経由しないのでgets
やgetc
など
と混用すると思わぬ動作をすることがあります.
syswrite(string)
`write(2)'を用いてstringを出力します. `stdio'を経由しないので他の出力メソッドと混用す ると思わぬ動作をすることがあります.
tell
ファイルポインタの現在の位置を返します.
write(str)
IOポートに対してstrを出力します.出力されたバイト 数を返します.
ungetc(char)
charを読み戻します.1バイト以上の読み戻しは保証さ れません.