Назад к вопросам
СБЕР
Senior
3
Как читать большой CSV-файл (1GB+)? Как парсить и решить проблему разрыва строк на границе чанков?
Компании, где спрашивали
Ответ от нейросети
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) {
// Обработка строки
}
}
Такой подход гарантирует, что строки будут прочитаны полностью, даже если они длинные и могут быть разорваны при чтении по частям. Если же нужен более низкоуровневый контроль, можно реализовать буферизацию и вручную склеивать неполные строки.