前 - 上 - 次 - 目次

# IO

  `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`や`eof?`など と混用すると思わぬ動作をすることがあります．

  `syswrite(string)`

    ``write(2)'`を用いてstringを出力します． ``stdio'`を経由しないので他の出力メソッドと混用す ると思わぬ動作をすることがあります．

  `tell`

    ファイルポインタの現在の位置を返します．

  `write(str)`

    IOポートに対してstrを出力します．出力されたバイト 数を返します．

  `ungetc(char)`

    charを読み戻します．2バイト以上の読み戻しは保証さ れません．

前 - 上 - 次 - 目次

matz@netlab.co.jp