开发者社区 问答 正文

Java哪个CSV解析器用于动态列

我会尽力解释我的意思。我的工作是让用户选择哪一列应该是数据库中的哪个属性。需要手动映射,然后将其写到数据库中。CSV文件彼此完全不同。

有些CSV文件带有标题,有些则没有。我不知道CSV文件中的内容是什么(列数而不是始终作为定界符)。

Java中哪个库最适合CSV解析?我刚刚使用静态CSV结构和CsvToBean,但是我不知道如何完成此工作。

展开
收起
几许相思几点泪 2019-12-08 22:33:47 619 分享 版权
阿里云 AI 助理回答

在Java中处理CSV文件时,Apache Commons CSV和OpenCSV是两个非常流行且功能强大的库,它们都能很好地适应您描述的场景。这两个库都支持灵活的CSV解析,包括处理带或不带标题行的文件,以及不确定列数的情况。

  1. Apache Commons CSV:

    • Apache Commons CSV是一个成熟的库,它提供了用于读取、写入和处理CSV数据的API。
    • 它支持灵活的CSV解析配置,比如跳过注释行、处理自定义分隔符等。
    • 对于您的需求,可以使用CSVParser来解析CSV文件,并利用CSVRecord遍历每一行。如果CSV有标题行,您可以使用HeaderColumnNameMappingStrategyCsvToBean类似的映射策略来自动映射列名到Java对象属性。
    • 文档链接:Apache Commons CSV
  2. OpenCSV:

    • OpenCSV是一个简单而快速的CSV解析器/编写器,它也广泛应用于Java项目中。
    • 它允许你以非常直接的方式读取和写入CSV文件,即使文件没有标题行或者结构不固定也能处理。
    • 通过使用CSVReader,您可以逐行读取CSV内容,对于需要动态映射的情况,可能需要自己实现逻辑来根据实际内容决定如何映射到Java对象。
    • 文档链接:OpenCSV

考虑到您的需求(特别是处理不同结构的CSV文件),两者都可以胜任,但Apache Commons CSV在处理复杂情况和提供高级特性方面可能更胜一筹。建议您根据项目的具体需求和您对这两个库的熟悉程度来选择。如果您希望有更多控制权和灵活性,同时不介意稍微复杂的配置,Apache Commons CSV可能是更好的选择。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答