У меня есть список массивов строк, которые мне нужно эффективно записать в файл CSV. Я пробовал это двумя способами ниже.
Набор данных - это файл размером не менее 1 миллиона записей. ie. returnedList
имеет как минимум 1 миллион String[]
массивов.
Мой текущий код ужасно неэффективен и занимает слишком много времени при использовании StringBuilder:
BufferedWriter br = new BufferedWriter(new FileWriter(filePath + "test.csv"));
for(String[] listEntry : returnedList) {
// convert each array to a string first
for(String s : listEntry) {
builder.append(s);
}
String str = builder.toString();
br.write(str);
br.newLine();
}
br.close();
assertThat(newFirstRow).isNotEmpty();
Моя вторая попытка была с использованием OpenCsv API:
Writer writer = Files.newBufferedWriter(Paths.get(filePath + "test.csv"));
StatefulBeanToCsv<String[]> beanToCsv = new StatefulBeanToCsvBuilder(writer)
.withQuotechar(CSVWriter.NO_QUOTE_CHARACTER)
.build();
beanToCsv.write(returnedList);
Этот метод не удался, поскольку каким-то образом все записи, которые были вставлены в файл, были полностью пусты.
Я неправильно использую библиотеку OpenCsv?