パッケージ myproject.java.utils
クラス CsvIterator
java.lang.Object
myproject.java.utils.CsvIterator
ストリームからCSV形式のデータを読み取り、CSV1行分のデータを返すイテレータを
実装します。
Copyright ycookjp https://github.com/ycookjp/
import myproject.java.utils.CsvIterator;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.IOException;
...
Reader in = null;
try {
in = new InputStreamReader(
new FileInputStream("/path/to/csv"), "UTF-8");
for (List>String< rowdata: new CsvIterator(in)) {
...
}
} catch (IOException ie) {
...
} finally {
if (in != null) {
try {
in.close();
} catch (IOException ie) { }
}
}
|
-
コンストラクタの概要
コンストラクタ修飾子コンストラクタ説明protected外部からのデフォルトコンストラクタ呼び出しを抑止するための コンストラクタ。CsvIterator(Reader in) CSV形式のデータを入力するReaderを指定して、CSV1行分のデータを 返すイテレータを構築します。 -
メソッドの概要
クラスから継承されたメソッド java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitインタフェースから継承されたメソッド java.lang.Iterable
forEach, spliteratorインタフェースから継承されたメソッド java.util.Iterator
forEachRemaining, remove
-
コンストラクタの詳細
-
メソッドの詳細
-
iterator
CSV1行分のCSV項目を格納知ったListのイテレータを返します。 -
hasNext
public boolean hasNext()反復処理で更にに要素がある場合にtrueを返します。 つまり、next()が例外をスローするのではなく要素を返す場合は、trueを 返します。 このメソッドを呼び出すと、コンストラクタから渡されたReaderのReader.read()メソッドを呼び出し、-1が返された場合はfalseを 返します。そうでない場合は、strbufに読み込んだ文字を追加して trueを返します。- 定義:
hasNextインタフェース内Iterator<List<String>>- 戻り値:
- 次の要素がある場合はtrue、そうでない場合はfalseを返します。
- 例外:
RuntimeException- 内部でIOExceptionが発生した場合。
-
next
CSV1行分のデータを格納したListを返します。CSV形式の文字列からCSVの項目を要素とする
Listを生成して返却する 処理は以下のとおりである。-
「"」が見つかったら次の「"」が見つかるまでコンマや改行を含めて
読み込んだ文字列を現在処理中の
List項目の文字列に追加する。 -
カンマが見つかったら、現在処理中の
List項目の文字列をlistに 追加して、次のList項目の文字列追加処理を開始する。その際 追加されたList項目の文字列の先頭と最後が「"」である場合は、 最初と最後の「"」を除去し、連続する2つの「"」は1つの「"」に変換する。 -
改行またはストリームの終わりに達したら、現在処理中の
List項目の 文字列から最後の改行コードを除いてListに追加してそのlistを 返す。なお、追加されたList項目の文字列の先頭と最後が「"」の 場合の扱いは、カンマが見つかった場合と同様である。
- 定義:
nextインタフェース内Iterator<List<String>>- 戻り値:
- CSV1行分の各項目が格納された
Listを返します。 - 例外:
RuntimeException- 内部でIOExceptionが発生した場合。
-
「"」が見つかったら次の「"」が見つかるまでコンマや改行を含めて
読み込んだ文字列を現在処理中の
-