我正在尝试使用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之间是否需要任何内容​​。

10-08 15:07