Метод apache-commons-csv println не выводит новую строку в вывод - PullRequest
1 голос
/ 10 апреля 2019

Я новичок в apache-commons-csv 1.6

У меня есть основное требование печатать CSV-файл с каждой записью в новой строке. Я пытаюсь использовать метод println CSVPrinter. По какой-то странной причине в выходном файле нет символа новой строки. Все напечатано в одну строку.

Я попытался открыть вывод в Notepad ++ и показать непечатные символы. Между записями нет символа. Любая помощь будет принята с благодарностью. Спасибо.

CSVPrinter csvPrinter = null;

if(delimiter != null && delimiter.length() > 0) {
    csvPrinter = new CSVPrinter(new FileWriter(outputFile), CSVFormat.newFormat(delimiter.charAt(0)).withHeader(header));
}else {
    csvPrinter = new CSVPrinter(new FileWriter(outputFile), CSVFormat.DEFAULT.withHeader(header));
}

for(Map<String,String> record : inputList) {
    List<String> valueList = new ArrayList<String>();
    for(String key : record.keySet()) {
        valueList.add(record.get(key));
    }
    System.out.println(valueList);
    csvPrinter.printRecord(valueList);
    csvPrinter.println();
}
csvPrinter.close();

Ожидаемый результат:

Идентификатор | Тип | Значение | ключ

4 | первенствует | 0 | excel.sheet.no

5 | преуспеть | дд / мм / гггг | excel.date.format

6 | первенствует | 0 | excel.baserate.rownum

Фактический результат: Идентификатор | Тип | Значение | Key4 | первенствует | 0 | excel.sheet.no5 | первенствует | дд / мм / гггг | excel.date.format6 | первенствует | 0 | excel.baserate.rownum

1 Ответ

0 голосов
/ 10 апреля 2019

Не используйте метод newFormat , если вы не хотите переопределять все разделители

Используйте этот метод, если вы хотите создать CSVFormat с нуля. Все поля, кроме разделителя, будут инициализированы значением null / false.

Если вы хотите добавить новый разделитель строк для каждой записи, добавьте withRecordSeparator

CSVFormat.newFormat(delimiter.charAt(0)).withHeader(header)).
 withRecordSeparator(System.getProperty("line.separator"));

Возвращает новый CSVFormat с разделителем записей в формате, установленном для указанного символа.

Примечание. Этот параметр используется только во время печати и не влияет на синтаксический анализ. В настоящее время синтаксический анализ работает только для входных данных с «\ n», «\ r» и «\ r \ n»

...