概要
Rubyではデータ読み込みの際に使用するメソッドによって、ファイル末尾に到達した時の振る舞いや空ファイルを開いた時の振る舞いが異なります。
各メソッドの動きとEOF・空ファイルに対する振る舞いの違いについてまとめました。
IOクラスのファイルを読み込むメソッド・振る舞い一覧
| メソッド名 | 処理 | EOF・空ファイルに対する振る舞い |
|---|---|---|
| read | IOから内容を読み込む。引数で読み込みの長さの指定が可能。 | 空ファイルの場合は「""」が返る。引数で読み込みの長さが指定されている場合はnilが返る。 |
| readlines | ファイルを全て読み込んで、行ごとに要素に分けた配列にして返す。 | 空ファイルの場合は空配列([])が返る。 |
| each/foreach | 指定されたファイルを開き、各行ごとにブロックに渡す。 | 与えられたブロックが実行されない。 |
| each_byte | 与えられたブロックに1バイトずつ整数として渡す。 | EOFであれば何もしない。 |
| gets | IOオブジェクトから1行だけ読み込む。 | nilを返す。 |
| readline | IOオブジェクトから1行だけ読み込む。 | EOFErrorエラーが発生する。 |
| getc | IOオブジェクトから1文字読み込む。 | nilを返す。 |
| readchar | IOオブジェクトから1文字読み込む。 | EOFErrorエラーが発生する。 |
| getbyte | IOオブジェクトから1バイト読み込んで整数として返す。 | nilを返す。 |
| readbyte | IOオブジェクトから1バイト読み込んで整数として返す。 | EOFErrorエラーが発生する。 |