我需要解析可能非常大的文件,可能有 100 兆字节和数百万行。我一直在尝试使用FlatPack来做到这一点。我认为这样做的方法是使用缓冲解析器和新的流方法。但是,尽管 dataset.next() 为正确的记录数返回 true,但 dataset.getRecord() 返回的 Optional 从不包含值。
我看过这个例子/测试 ,但它只计算记录的数量,实际上并没有对内容做任何事情。示例/测试
您可以使用类 BuffReaderParseFactory 而不是 DefaultParserFactory。
只有当您调用“next()”时,它才会从输入文件中读取一条记录。
DefaultParserFactory 和 BuffReaderParseFactory 的解释并不完全有帮助。两个库都说要返回PZParser
(from newDelimitedParser
),但只有一个库从记录中返回实际值。根据我看到的示例,我认为BuffReaderParseFactory
只是为了检查性能(因此应该更快),DefaultParserFactory
另一方面包含所有记录。