2014年5月9日金曜日

【アプリ開発】CSVファイル読込クラス

CSVファイルを読み込むだけの汎用的なクラスが欲しくて作成しました(^^;


CSVファイル読込クラス


/***************************************************************************
* CSVコントロールクラス
***************************************************************************/
public class CSVCtrl
{
    /***************************************************************************
    * CSVファイルから読み込んだデータリストを取得
    *
    * @param csContext        コンテキスト
    * @param strCsvFileName   CSVファイル名
    * @return 読み込んだCSVデータリスト
    *
    * @author k0j1
    ***************************************************************************/
    static public List ReadCSV(Context csContext, String strCsvFileName)
    {
        InputStream csInputStream = null;
        BufferedReader csBufReader = null;
        List sCsvList = new ArrayList();

        try
        {
            AssetManager csAsset = csContext.getResources().getAssets();
            csInputStream = csAsset.open(strCsvFileName);
            csBufReader = new BufferedReader(new InputStreamReader(csInputStream));

            // タイトル処理
            // タイトルは読み捨てる
            csBufReader.readLine();

            // データ処理
            {
                // 最終行まで読み込む
                for( String line = ""; (line = csBufReader.readLine()) != null; )
                {

                    // 1行をデータの要素に分割
                    StringTokenizer csStringToken = new StringTokenizer(line, ",");

                    // リストに保持
                    sCsvList.add(csStringToken);
                }
                csBufReader.close();
            }

        } catch (FileNotFoundException e) {
            // Fileオブジェクト生成時の例外捕捉
            e.printStackTrace();
        } catch (IOException e) {
            // BufferedReaderオブジェクトのクローズ時の例外捕捉
            e.printStackTrace();
        }

        return sCsvList;
    }
}


上記の関数で以下のような最初の1行がタイトル行であるCSVファイルを処理できます。


❏timetable.csv
番号,50音順(1:あ行、2:か行、…),地域区分,区,愛称,経路区分,経路・時刻表名,URL
1,1,1,荒川区,さくら・汐入さくら,1,運行ルート,http://yamatocreation.cocotte.jp/bus/arakawa/keiro
2,1,1,荒川区,さくら・汐入さくら,2,さくら時刻表,http://yamatocreation.cocotte.jp/bus/arakawa/sakura
3,1,1,荒川区,さくら・汐入さくら,3,汐入さくら時刻表,http://yamatocreation.cocotte.jp/bus/arakawa/sioiri
4,1,1,荒川区,さくら・汐入さくら,4,町屋さくら時刻表,http://yamatocreation.cocotte.jp/bus/arakawa/matiya
:

2 件のコメント:

  1. 横にスワイプするとすぐ記事が入れ替わるのが読みづらいです。
    アフィカスさんならナイスアイディアだと思いますが

    返信削除
    返信
    1. ご指摘ありがとうございます。
      テンプレートのままだったため、カスタムしてスワイプの動作を止めました。
      よろしくお願いしますm(_ _)m

      削除