如何使用univocity解析器从CSV读取前几行

时间:2017-12-12 17:45:01

标签: univocity

如何在univocity解析器中使用迭代器/行处理器从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

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

new Tika().detect(input)

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

1 个答案:

答案 0 :(得分:1)

您有许多不同的选择:

  1. 从行处理器中调用context.stop()

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

  3. 使用解析器本身,请致电parser.stopParsing()

  4. 希望这有帮助