我正在使用 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;
}
但是还是不行。
有什么办法可以改变这个设置吗?
最佳答案
空列不需要在 CSV 中转义(因此默认情况下 Super CSV 不会在空字符串周围应用引号),但如果您希望始终应用引号,则可以更改 QuoteMode在 super CSV 中。
这是一个 recent example在 SO 上证明了这一点。
更新:如果您只想引用空字符串,请确保您写入的值是空字符串(即您可能需要使用 ConvertNullTo("")
), 然后使用下面的引用方式:
public class QuoteEmptyString implements QuoteMode {
/**
* {@inheritDoc}
*/
@Override
public boolean quotesRequired(String csvColumn, CsvContext context,
CsvPreference preference) {
return "".equals(csvColumn);
}
}
关于java - 我怎样才能告诉 SuperCSV 不要将空字符串映射到 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21592097/