我正在使用ICsvListReader和ICsvListWriter来读写csv文件。
我发现csv文件中的空字符串被转换为null然后输出。
我怎样才能避免这种情况发生。我尝试过创建一个新的CellProcessor:
private CellProcessor[] getProcessors(int columnNumber){
CellProcessor[] processors = new CellProcessor[columnNumber];
for (int i=0; i< columnNumber; i++){
processors[i] = new ConvertNullTo("");
}
return processors;
}
但它仍然无效。
有没有办法更改此设置?
答案 0 :(得分:0)
空列不需要以CSV格式转义(因此默认情况下,超级CSV不会在空字符串周围应用引号),但如果您希望始终应用引号,则可以更改超级CSV中的QuoteMode
这是一个关于SO的recent example来证明这一点。
更新:如果你只想引用空字符串,那么确保你写的值是空字符串(即你可能需要使用ConvertNullTo("")
),然后使用以下报价模式:
public class QuoteEmptyString implements QuoteMode {
/**
* {@inheritDoc}
*/
@Override
public boolean quotesRequired(String csvColumn, CsvContext context,
CsvPreference preference) {
return "".equals(csvColumn);
}
}