Apache Common CSV настроить перенос строки для генерации файла
Использую в своем проекте Apache Common CSV (http://commons.apache.org/proper/commons-csv/). Необходима возможность генерить CSV файл для данных в таблице, имя таблицы и параметры получаю "на лету" с фронта.
Я получаю rows из таблицы и загоняю это в CSVPrinter. Проблема заключается в том, что некоторые поля в таблице - JSON. Поля могу начинаться c \r\n или \n, то бишь - "{\r\n "message_type": "MO"}" и в таком случае CSVprinter отделяет строку на следующую раньше конца строки и я получаю сломанный CSV файл. Покопался в настройках CSVFormat, понял, что есть возможность настроить delimeter и еще кучу параметров, но так и не нашел решения своей проблемы.
try (
BufferedWriter writer = Files.newBufferedWriter(Paths.get(csvLocation));
CSVPrinter csvPrinter = new CSVPrinter(writer,
CSVFormat.DEFAULT
.withHeader(headers))
) {
for (Collection<Object> currentValue : values) {
csvPrinter.printRecord(currentValue);
}
csvPrinter.flush();
return Files.readAllBytes(Paths.get(csvLocation));
} catch (IOException e) {
//TODO logging and custom exception here
log.error("Something goes wrong while parsing and writing file - " + csvLocation);
throw new RuntimeException(e.getMessage());
}