[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をインスタンス化し、使用します。