Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > csvライブラリ > CSV::IOReaderクラス

class CSV::IOReader + CSV::Reader

クラスの継承リスト: CSV::IOReader < CSV::Reader < Enumerable < Object < Kernel

要約

CSVの読み込み処理を行うクラス

特異メソッド

create(str_or_readable, fs = ',', rs = nil) -> CSV::StringReader

CSVデータを解析して、解析結果を格納したCSV::StringReaderを返します。

[PARAM] str_or_readable:
パースする対象の文字列
[PARAM] fs:
フィールドセパレータの指定。 nil (デフォルト) で ',' をセパレータとします。
[PARAM] rs:
行区切り文字の指定。nil (デフォルト) で CrLf / Lf。 Cr を行区切りとしたい場合は ?\r を渡します。
new(io, fs = ',', rs = nil) -> CSV::IOReader

引数に従い、CSV::IOReaderクラスのオブジェクトを生成します。

[PARAM] io:
読み込み先の指定。
[PARAM] fs:
フィールドセパレータの指定。 nil (デフォルト) で ',' をセパレータとします。
[PARAM] rs:
行区切り文字の指定。nil (デフォルト) で CrLf / Lf。 Cr を行区切りとしたい場合は ?\r を渡します。
parse(str_or_readable, fs = ',', rs = nil) -> CSV::StringReader
parse(str_or_readable, fs = ',', rs = nil) {|row| ... } -> nil

CSVデータを解析して、CSV::StringReaderを返します。 ブロックに渡された場合はパースした結果を1列ずつArrayとして渡します。

[PARAM] str_or_readable:
パースする対象の文字列
[PARAM] fs:
フィールドセパレータの指定。 nil (デフォルト) で ',' をセパレータとします。
[PARAM] rs:
行区切り文字の指定。nil (デフォルト) で CrLf / Lf。 Cr を行区切りとしたい場合は ?\r を渡します。
注意

パース時に""(空文字)と値なしを区別します。 例えば、a, "", , b の行をパースした場合には ["a", "", nil, "b"] の配列を返します。

例:

CSV::Reader.parse("1,2,3\nA,B,C\n"){|row|
  p row
}

インスタンスメソッド

close -> nil

内部的にterminateメソッドを呼び出します。

close_on_terminate -> true

本メソッドを呼び出すことで終了(CSV::IOReader#terminate メソッド実 行)時に CSV::IOReader オブジェクトが new メソッドで指定した読み込 み先のIOクローズ処理を行います。

each {|row| ... } -> nil

自身から 1 行ずつ読み込み、それを引数として与えられたブロックを実行します。

shift -> Array

CSVをパースした結果から1行分を取り除き、取り除いた1行を配列として返します。 shiftは破壊的メソッドです。

注意

パース時に""(空文字)と値なしを区別します。 例えば、a, "", , b の行をパースした場合には ["a", "", nil, "b"] の配列を返します。

privateメソッド

get_row(row) -> Fixnum

CSVデータの1行分のデータを取得します。

1行分のデータを取得し、パラメータrowに配列として出力します。 返り値として、セルの数(配列のサイズ)を返します。

[PARAM] row:
1行分のデータを格納する配列
get_row(row) -> ()

本メソッドは再定義 or サブクラスで定義されることを想定されています。 再定義せずに呼び出した場合は例外NotImplementedErrorが発生します。

initialize(dev) -> ()

本メソッドは再定義 or サブクラスで定義されることを想定されています。 再定義せずに呼び出した場合は例外RuntimeErrorが発生します。

terminate -> nil

オブジェクト破棄を行います。 close_on_terminateメソッドが既に呼び出されていれば、IO(newメソッドでパラメタとして渡したオブジェクト)の終了処理を行います。

terminate -> ()

終了時処理を行う場合に再定義してください。

class CSV::IOReader