パッケージ myproject.java.utils

クラス CsvIterator

java.lang.Object
myproject.java.utils.CsvIterator
すべての実装されたインタフェース:
Iterable<List<String>>, Iterator<List<String>>

public class CsvIterator extends Object implements Iterable<List<String>>, Iterator<List<String>>
ストリームから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
    外部からのデフォルトコンストラクタ呼び出しを抑止するための コンストラクタ。
     
    CSV形式のデータを入力するReaderを指定して、CSV1行分のデータを 返すイテレータを構築します。
  • メソッドの概要

    修飾子とタイプ
    メソッド
    説明
    boolean
    反復処理で更にに要素がある場合にtrueを返します。
    CSV1行分のCSV項目を格納知ったListのイテレータを返します。
    CSV1行分のデータを格納したListを返します。

    クラスから継承されたメソッド java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    インタフェースから継承されたメソッド java.lang.Iterable

    forEach, spliterator

    インタフェースから継承されたメソッド java.util.Iterator

    forEachRemaining, remove
  • コンストラクタの詳細

    • CsvIterator

      public CsvIterator(Reader in)
      CSV形式のデータを入力するReaderを指定して、CSV1行分のデータを 返すイテレータを構築します。
      パラメータ:
      in - CSV形式のデータを入力するReader
    • CsvIterator

      protected CsvIterator()
      外部からのデフォルトコンストラクタ呼び出しを抑止するための コンストラクタ。
  • メソッドの詳細

    • iterator

      public Iterator<List<String>> iterator()
      CSV1行分のCSV項目を格納知ったListのイテレータを返します。
      定義:
      iterator インタフェース内 Iterable<List<String>>
    • hasNext

      public boolean hasNext()
      反復処理で更にに要素がある場合にtrueを返します。 つまり、next()が例外をスローするのではなく要素を返す場合は、trueを 返します。 このメソッドを呼び出すと、コンストラクタから渡されたReaderReader.read()メソッドを呼び出し、-1が返された場合はfalseを 返します。そうでない場合は、strbufに読み込んだ文字を追加して trueを返します。
      定義:
      hasNext インタフェース内 Iterator<List<String>>
      戻り値:
      次の要素がある場合はtrue、そうでない場合はfalseを返します。
      例外:
      RuntimeException - 内部でIOExceptionが発生した場合。
    • next

      public List<String> next()
      CSV1行分のデータを格納したListを返します。

      CSV形式の文字列からCSVの項目を要素とするListを生成して返却する 処理は以下のとおりである。

      1. 「"」が見つかったら次の「"」が見つかるまでコンマや改行を含めて 読み込んだ文字列を現在処理中のList項目の文字列に追加する。
      2. カンマが見つかったら、現在処理中のList項目の文字列をlistに 追加して、次のList項目の文字列追加処理を開始する。その際 追加されたList項目の文字列の先頭と最後が「"」である場合は、 最初と最後の「"」を除去し、連続する2つの「"」は1つの「"」に変換する。
      3. 改行またはストリームの終わりに達したら、現在処理中のList項目の 文字列から最後の改行コードを除いてListに追加してそのlistを 返す。なお、追加されたList項目の文字列の先頭と最後が「"」の 場合の扱いは、カンマが見つかった場合と同様である。
      定義:
      next インタフェース内 Iterator<List<String>>
      戻り値:
      CSV1行分の各項目が格納されたListを返します。
      例外:
      RuntimeException - 内部でIOExceptionが発生した場合。