2014-02-06 103 views
2

我正在使用ICsvListReader和ICsvListWriter读取和写入csv文件。
我发现csv文件中的空字符串被转换为null然后输出。
我该如何避免这种情况发生。我试过创建一个新的CellProcessor:如何告诉SuperCSV不要将空字符串映射为空

private CellProcessor[] getProcessors(int columnNumber){ 

     CellProcessor[] processors = new CellProcessor[columnNumber]; 
     for (int i=0; i< columnNumber; i++){ 
      processors[i] = new ConvertNullTo(""); 
     } 
     return processors; 
    } 

但它仍然无法正常工作。

有什么方法可以改变这个设置吗?

回答

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); 
    } 

} 
+0

嗨,谢谢你的回复,但我不想总是应用引号,只是在空字符串上, – Jusleong

相关问题