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
: