Sobes.tech
Senior
53

Чӣ гуна хондани файли CSV-и калон (беш аз 1GB)? Чӣ гуна онро парс ва масъалаи қатъ шудани сатр дар марзи чанкоро ҳал кардан мумкин аст?

Ширкатҳо дар куҷо пурсиданд
СБЕРСБЕР

Ҷавоб аз 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) {
        // Обработка строки
    }
}

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