Sobes.tech
Senior
51

Böyük CSV faylını (1GB+ və ya daha çox) necə oxumaq olar? Parçaların sərhədindəki sətir qırılma problemini necə həll etmək olar?

Şirkətlər soruşuldu
СБЕРСБЕР

AI-dan cavab

sobes.tech Süni İntellekt

Для чтения большого 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) {
        // Обработка строки
    }
}

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