Sobes.tech
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) {
        // Обработка строки
    }
}

Такой подход гарантирует, что строки будут прочитаны полностью, даже если они длинные и могут быть разорваны при чтении по частям. Если же нужен более низкоуровневый контроль, можно реализовать буферизацию и вручную склеивать неполные строки.