java CSVReader和CSVWriter产生意外结果

时间:2014-03-21 04:53:04

标签: java csv opencsv

我使用OpenCSV中的Java CSVReader和CSVWriter

    public static void main(String[] args) throws IOException {
        File inputFile=new File("e:\\temp\\5.csv");
        File outputFile=new File("e:\\temp\\5_out.csv");
        CSVReader reader=new CSVReader(new FileReader(inputFile));
        CSVWriter outputWriter = new CSVWriter(new FileWriter(outputFile),',', '"');
        //CSVWriter outputWriter = new CSVWriter(new FileWriter(outputFile),',', '"','\\');
        Listlines=reader.readAll();

        outputWriter.writeAll(lines);
        outputWriter.flush();
        outputWriter.close();
        reader.close();
    }

INPUT1

"\"7 BURY NEW ROAD  MANCHESTER","","","","Prestwich"

OUTPUT1

"""7 BURY NEW ROAD  MANCHESTER","","","","Prestwich"

我不明白为什么输出就是这样。有人可以解释逻辑吗?

如果我取消注释它评论的行,基本上告诉作者使用' \'为了逃避引号和转义字符,它有以下结果:

OUTPUT2

"\"7 BURY NEW ROAD  MANCHESTER","","","","Prestwich"

我也不明白为什么输出就是这样。

1 个答案:

答案 0 :(得分:0)

我认为这是有道理的。 CSVReader使用\ as escape character,似乎无法更改。阅读后,您的输入将从以下结构开始:

DELIMITER - ESCAPED_QUOTATION_MARK

你的第一个CSVWriter的转义符是“,所以第一个输出以

开头
"""

你的第二个CSVWriter与\一起逃脱,所以

"\"

输出是。

(消失的曼彻斯特也是问题的一部分还是只是一个错字?)