С OpenCSV, как мне добавить к существующему CSV, используя MappingStrategy?Есть много примеров, которые я мог бы найти, где НЕ использовать состояние отображения бина, НО мне нравится динамическая природа отображения столбца со стратегией бина, и я хотел бы, чтобы он работал таким образом.Вот мой код, который просто переписывает одну строку в файл CSV вместо добавления.
Как я могу это исправить?Использование OpenCSV 4.5.Примечание: я установил свой FileWriter для append = true.Этот сценарий не работает, как я ожидал.Повторный запуск этого метода просто приводит к перезаписи всего файла заголовком и одной строкой.
public void addRowToCSV(PerfMetric rowData) {
File file = new File(PerfTestMetric.CSV_FILE_PATH);
try {
CSVWriter writer = new CSVWriter(new FileWriter(file, true));
CustomCSVMappingStrategy<PerfMetric> mappingStrategy
= new CustomCSVMappingStrategy<>();
mappingStrategy.setType(PerfMetric.class);
StatefulBeanToCsv<PerfMetric> beanToCsv
= new StatefulBeanToCsvBuilder<PerfMetric>(writer)
.withMappingStrategy(mappingStrategy)
.withSeparator(',')
.withApplyQuotesToAll(false)
.build();
try {
beanToCsv.write(rowData);
} catch (CsvDataTypeMismatchException e) {
e.printStackTrace();
} catch (CsvRequiredFieldEmptyException e) {
e.printStackTrace();
}
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Или это обычный шаблон для загрузки всех строк в список, а затем перезаписи всегофайл?Я смог заставить его работать, написав две стратегии сопоставления MappingStrategy и затем условно используя их с if-file-существующие, но при таком способе я оставляю в своем коде предупреждение «Непроверенное назначение».Не идеально;надеетесь на элегантное решение?