我会尽力解释我的意思。我的工作是让用户选择哪一列应该是数据库中的哪个属性。需要手动映射,然后将其写到数据库中。CSV文件彼此完全不同。
有些CSV文件带有标题,有些则没有。我不知道CSV文件中的内容是什么(列数而不是始终作为定界符)。
Java中哪个库最适合CSV解析?我刚刚使用静态CSV结构和CsvToBean,但是我不知道如何完成此工作。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Java中处理CSV文件时,Apache Commons CSV和OpenCSV是两个非常流行且功能强大的库,它们都能很好地适应您描述的场景。这两个库都支持灵活的CSV解析,包括处理带或不带标题行的文件,以及不确定列数的情况。
Apache Commons CSV:
CSVParser
来解析CSV文件,并利用CSVRecord
遍历每一行。如果CSV有标题行,您可以使用HeaderColumnNameMappingStrategy
与CsvToBean
类似的映射策略来自动映射列名到Java对象属性。OpenCSV:
CSVReader
,您可以逐行读取CSV内容,对于需要动态映射的情况,可能需要自己实现逻辑来根据实际内容决定如何映射到Java对象。考虑到您的需求(特别是处理不同结构的CSV文件),两者都可以胜任,但Apache Commons CSV在处理复杂情况和提供高级特性方面可能更胜一筹。建议您根据项目的具体需求和您对这两个库的熟悉程度来选择。如果您希望有更多控制权和灵活性,同时不介意稍微复杂的配置,Apache Commons CSV可能是更好的选择。