Senior
58
Hoe lees je een groot CSV-bestand (meer dan 1 GB)? Hoe parser je het en los je het probleem van regelonderbreking aan de grenzen van chunks op?
Bedrijven waar gevraagd werd
Antwoord van AI
sobes.tech AI
Для чтения большого CSV-файла (1GB+) в Java и корректного парсинга строк, которые могут быть разорваны на границах чанков, можно использовать следующий подход:
- Читайте файл не целиком, а по частям (чанкам) с помощью BufferedReader или FileChannel.
- При чтении чанка сохраняйте остаток последней неполной строки и добавляйте ее к следующему чанку.
- Используйте специализированные CSV-парсеры, которые поддерживают потоковое чтение (например, OpenCSV, Apache Commons CSV).
Пример с BufferedReader и OpenCSV:
try (BufferedReader reader = new BufferedReader(new FileReader("large.csv"))) {
CSVParser parser = new CSVParserBuilder().withSeparator(',').build();
CSVReader csvReader = new CSVReaderBuilder(reader).withCSVParser(parser).build();
String[] nextLine;
while ((nextLine = csvReader.readNext()) != null) {
// Обработка строки
}
}
Такой подход гарантирует, что строки будут прочитаны полностью, даже если они длинные и могут быть разорваны при чтении по частям. Если же нужен более низкоуровневый контроль, можно реализовать буферизацию и вручную склеивать неполные строки.