2

如何在单义性解析器中使用迭代器/行处理器从 CSV 文件中读取几行后停止解析?

更新#1

我尝试了下面的代码,但我得到了空行。

val parserSettings = new CsvParserSettings
parserSettings.detectFormatAutomatically()
parserSettings.setEmptyValue("")
parserSettings.setNumberOfRecordsToRead(numberOfRecordsToRead)

val parser = new CsvParser(parserSettings)
val input = new FileInputStream(path)
val rows = parser.parseAll(input)

更新#2

在将输入流传递给解析器之前,我使用 Apache Tika 来检测文件的 MIME 类型以检测文件是否为 CSV。

new Tika().detect(input)

这正在改变输入流。由于 Univocity 解析器无法正确解析。

4

1 回答 1

1

您有许多不同的选择:

  1. 从您的行处理器只需调用context.stop().

  2. 在解析器设置上,您可以设置settings.setNumberOfRecordsToRead(10)为读取 10 行并停止。

  3. 使用解析器本身,调用parser.stopParsing()

希望这可以帮助

于 2017-12-13T07:10:28.097 回答