Открыть CSV добавить строку без повторного добавления заголовка - PullRequest
0 голосов
/ 25 марта 2019

РЕДАКТИРОВАТЬ: Я попытался переопределить метод, как предложено, но он добавляет белую линию

Я использую OpenCSV для чтения / записи изCSV-файл, и мне нужно добавить новую строку моего объекта " Crime ", когда пользователь добавляет еще один.
До сих пор я нашел такой способ написания только во всех руководствах:

 Writer writer  = new FileWriter(path.toString());

StatefulBeanToCsv sbc = new StatefulBeanToCsvBuilder(writer)
   .withSeparator(CSVWriter.DEFAULT_SEPARATOR)
   .build();

List<CsvBean> list = new ArrayList<>();
list.add(new WriteExampleBean("Test1", "sfdsf", "fdfd"));
list.add(new WriteExampleBean("Test2", "ipso", "facto"));

sbc.write(list);
writer.close();

Проблема в том, что перед добавлением новой строки, он также добавляет заголовок, поэтому мой файл становится:

zipCode,totPopulation,medianAge,totMales,totFemales,totHouseholds,avgHouseholdSize,
91371,1,73.5,0,1,1,1,
90001,57110,26.6,28468,28642,12971,4.4,
90002,51223,25.5,24876,26347,11731,4.36,
90003,66266,26.3,32631,33635,15642,4.22,
zipCode,totPopulation,medianAge,totMales,totFemales,totHouseholds,avgHouseholdSize,
100,100,100,100,100,100,100

, где строка со всеми значениями "100" является однойЯ добавить.Как я могу предотвратить добавление заголовка перед строкой каждый раз, когда я хочу добавить строку или несколько строк?

1 Ответ

1 голос
/ 25 марта 2019

Попробуйте расширить HeaderColumnNameMappingStrategy и переопределить метод generateHeader, чтобы получить пустой массив.

Затем передайте экземпляр вашего нового класса в StatefulBeanToCsvBuilder через withMappingStrategy()

Согласно Javadoc MappingStrategy:

Если заголовок не может или не должен быть сгенерирован, массив нулевой длины должен быть возвращенным, а не нулевым.

Убедитесь, что вы делаете это, только если файл не новый, если вы хотите включить заголовки в первую строку.

...