[java]Super CSV で区切り文字や改行文字を任意に指定する

「で、区切り文字とかどうなってんの?」


はい、ちゃんと用意されています。CsvPreferenceというクラスで指定できます。
次のように第2引数で指定します。

ICsvBeanReader inFile = new CsvBeanReader(new FileReader("./data/foo.csv"), CsvPreference.EXCEL_PREFERENCE);

ICsvMapWriter writer = new CsvMapWriter(new FileWriter("./data/boo.csv"), CsvPreference.EXCEL_PREFERENCE);


CsvPreference.EXCEL_PREFERENCEを使用していますが、予め用意されている定義は全部で4種類。

定数名称 クォート文字 区切り文字(デリミタ) 改行文字
STANDARD_PREFERENCE " , \r\n
EXCEL_PREFERENCE " , \n
EXCEL_NORTH_EUROPE_PREFERENCE " ; \n
NO_COMMENT_PREFERENCE " , \n

何気にEXCEL_PREFERENCEとNO_COMMENT_PREFERENCEは、定義内容が全く同じです。

さて、当然これ以外のパターンについても任意で指定することが可能です。たとえば、クォート文字を'B'、区切り文字を'?'、改行文字列を"\r\n"としたい場合、

CsvPreference preference = new CsvPreference('B', '?', "\r\n");
ICsvBeanReader inFile = new CsvBeanReader(new FileReader("./data/foo.csv"), preference);

ICsvMapWriter writer = new CsvMapWriter(new FileWriter("./data/boo.csv"), preference);

といった要領でCsvPreferenceをインスタンス化し、使用します。