2

我正在使用 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;
    }

但它仍然无法正常工作。

有没有办法改变这个设置?

4

1 回答 1

0

空列不需要在 CSV 中转义(因此默认情况下 Super CSV 不会在空字符串周围应用引号),但如果您希望始终应用引号,那么您可以在 Super CSV中更改QuoteMode 。

这是最近关于 SO 的示例,它证明了这一点。

更新:如果您只想引用空字符串,请确保您正在编写的值是空字符串(即您可能需要使用ConvertNullTo("")),然后使用以下引用模式:

public class QuoteEmptyString implements QuoteMode {

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean quotesRequired(String csvColumn, CsvContext context, 
        CsvPreference preference) {
        return "".equals(csvColumn);
    }

}
于 2014-02-06T01:53:06.887 回答