CSVファイルを読み込むサンプル

サンプルダウンロード


CSVファイルの内容

"1","CSV読込の","2011/01/01"
"2","テスト中","2012/10/01"
"3","読み込めてますかー","2010/09/10"
"4","もっと行を","2011/01/01"
"5","増やしてみましょう","2012/10/01"
"6","これぐらいかな?","2010/09/10"
 

実行結果

[1, CSV読込の, 2011/01/01]
[2, テスト中, 2012/10/01]
[3, 読み込めてますかー, 2010/09/10]
[4, もっと行を, 2011/01/01]
[5, 増やしてみましょう, 2012/10/01]
[6, これぐらいかな?, 2010/09/10]
 

ソース

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
 
public class CsvRead {
 
	public static void main(String[] args) {
		List<String[]> list = readCsv(new File("CsvRead.csv"));
		for (String[] ary : list) {
			System.out.println(Arrays.toString(ary));
		}
	}
 
	// CSVファイルを読み込んで、String配列のリストとして返します。
	public static List<String[]> readCsv(File f) {
		List<String[]> list = new ArrayList<String[]>();
		try {
			FileInputStream s = new FileInputStream(f);
			// 文字コードを変える場合は、InputStreamReaderの第二引数を変更するとよいです。
			InputStreamReader r = new InputStreamReader(s, "Shift_JIS");
			BufferedReader br = new BufferedReader(r);
			String line;
			while((line = br.readLine()) != null) {
				line = line.substring(1, line.length() - 1);
				String[] ary = line.split("\",\"");
				list.add(ary);
			}
			br.close();
			r.close();
			s.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return list;
	}
}
 

解説

  • CSVファイルを一行ずつ読み込みます。
  • 一行の先頭と末尾の「"」を取り除くため、substringを使っています。
line = line.substring(1, line.length() - 1);
"hoge","moge","mage" hoge","moge","mage

  • 先頭と末尾の「"」を取り除いた文字列を、「","」で分割すると、綺麗に各項目に別れます。
String[] ary = line.split("\",\"");
hoge","moge","mage hoge moge mage

添付ファイル