我正在尝试使用CSVWriter
库编写一个简单的OpenCSV
代码,但是有一个奇怪的问题。
码:
public class Test {
public static void main(String[] args) throws IOException {
String[] header = {"ONE", "\"TWO\"", "\"THREE\"", "\"FOUR\""};
CSVWriter writer = new CSVWriter(new FileWriter("C:/test.csv"), '|', CSVWriter.NO_QUOTE_CHARACTER);
writer.writeNext(header);
writer.flush();
writer.close();
}
}
预期产量:
ONE|"TWO"|"THREE"|"FOUR"
实际输出:
ONE|""TWO""|""THREE""|""FOUR""
如我们所见,在两个,三个和四个周围有双引号,但是在输出中双引号是重复的。
我不希望这样,尝试了
CSVWriter
类的几个选项和构造函数,但无法对此进行分类。任何人都面临类似的问题或知道出路吗?
谢谢
最佳答案
它成功了,下面的构造函数起作用了:
CSVWriter writer = new CSVWriter(new FileWriter("C:/test.csv"), '|', CSVWriter.NO_QUOTE_CHARACTER, CSVWriter.NO_ESCAPE_CHARACTER);
原因是我看到
CSVWriter
默认情况下考虑将"
用作转义字符,因此,如果它包含在String中,它将尝试使用"
来转义DEFAULT_ESCAPE_CHARACTER
,而"
本身不是什么。通过传递
CSVWriter.NO_ESCAPE_CHARACTER
,Writer不必担心检查Escape之间是否需要任何内容。