【发布时间】:2016-05-29 05:24:44
【问题描述】:
我有一个系统,用户可以通过 csv 文件导入数据。 使用 SuperCSV 将文件解析为 POJO。
我希望能够在有或没有标题行的情况下管理这些文件。
CsvBeanReader.getHeader(true) 将提取第一行,但如果它不是标题,则 BeanReader 不会解析该行。
有没有一种简单的方法可以在不丢失第一行数据的情况下检测标题?
【问题讨论】:
我有一个系统,用户可以通过 csv 文件导入数据。 使用 SuperCSV 将文件解析为 POJO。
我希望能够在有或没有标题行的情况下管理这些文件。
CsvBeanReader.getHeader(true) 将提取第一行,但如果它不是标题,则 BeanReader 不会解析该行。
有没有一种简单的方法可以在不丢失第一行数据的情况下检测标题?
【问题讨论】:
从文件中读取值时跳过超级 csv 的标头的最佳方法:-
//不要写这行 beanReader.getHeader(true)
// 在读取值之前传递你声明的标题数组,如 headers = {column1},{column2}
//然后使用下面的行,不包括标题
beanReader.read(类型、标头、处理器))
以上步骤帮助我们读取保存的不带标题的csv文件。
【讨论】:
最简单的解决方案是只读取文件两次(在第一遍检查预期的标题 - 您只需要读取第一行,然后在第二遍读取有/没有标题)。
【讨论】:
我找到了解决办法。
通过使用BufferedReader 包装提供的Reader,我可以标记开头,读取第一行,如果不是标题,则执行reader.reset()。
【讨论】: