Мне нужно разбирать файлы, которые могут быть довольно большими, возможно, 100 мегабайт и миллионы строк. Я пытаюсь сделать это с помощью FlatPack. Я бы подумал, что способ сделать это будет использовать буферизованные парсеры и новые методы потока. Но, несмотря на то, что dataset.next() возвращает true для правильного количества записей, Опция, возвращаемая dataset.getRecord(), никогда не содержит значения.
Я просмотрел этот пример/test, но он учитывает только количество записей и фактически ничего не делает с содержимым. Пример/тест
Объяснения как для DefaultParserFactory, так и для BuffReaderParseFactory не совсем полезны. Обе библиотеки сказали вернуть PZParser
(из newDelimitedParser
), но только один из них возвращает фактическое значение из записи. Основываясь на примерах, которые я видел, я думаю, что BuffReaderParseFactory
предназначен только для проверки производительности (следовательно, должен быть быстрее), а DefaultParserFactory
с другой стороны, содержит все записи.
Вы можете использовать класс BuffReaderParseFactory вместо DefaultParserFactory.
Он будет читать одну запись из входного файла только при вызове "next()".