数据存储(四)CSV的存储与解析

数据存储(四)CSV的存储与解析,第1张

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。

优点: 1、结构简单,易于理解; 2、解析文本和还原文本的方式较为简洁高效; 3、可以轻松转换为Excel的 .xls 文件,亦可以利用 Excel 以表格的方式进行查阅。相比 .xls 文件,其本身由于只存储文本而不包含表格中的公式等其他附带信息,在相同的文件内容下 CSV 文件可以具有更小的文件体积。

缺点:   1、相比于二进制文件,由于是纯文本存储,体积会比较大; 2、虽然由于数据格式参差不齐,具备基本的安全性,但破解的风险依旧很高。

1、可以在Excel中创建保存为 CSV 文件,但是后续对 CSV 文件 *** 作最好用 Notepad++ 等文本编辑器来打开,最好使用 Notepad++;

2、使用Notepad++打开 CSV 文件后,需要将其转码为 UTF-8 格式,这样才能保证文件中的中文被正确显示,而 Excel 存储的文件均不是 UTF-8 编码格式的;

3、在Notepad++中打开 CSV 文件后,会发现多了一个空行,这是 Excel 的存储所导致的。最好把这个空行删掉,以便于程序中计算文件中的真实行数。

Comma-Separated Value ( [卡门 赛婆乱提的] 逗号分隔)(CSV),因分隔符没有严格的要求,可以使用逗号,也可以使用其他字符(如制表符\t,分号等),所以CSV也被称为 逗号分隔或者其他字符分隔值 。csv文件是使用纯文本来存储表格数据(只能存储文本,不能存储二进制)。

构造器涉及到的三个参数:

注:若是设置解析的编码,需要在InputStreamReader对象中设置。

在上面我们可以使用readNext或者readAll进行逐行解读。但是opencsv提供了基于"策略"的映射,将CSV绑定到bean。

注:bean的类型只能为基本数据类型以及String类型,若是BigDecimal类型,那么将会抛出异常。

解析后的bean类:

csv文件:

通俗点就是列位置映射,csv文件中列位置对应到bean中的列。

需要注意的是,该策略会输出所有的行, 故,我们需要跳过某些行。

测试方法:

测试结果:

csv文件:

测试结果:

在csv获取的都是字符串,这种情况下应该使用转换器。将csv中的字段转换为对应的bean中的字段类型。

opencsv为我们提供了上面的两个转换器(我们可以参考,来实现自定义转换器)。使用 AbstractBeanField<T>类来实现转换器。

csv文件

注:若是列映射策略,则要使用@CsvCustomBindByPosition()注解。

测试结果:

所有的过滤器必须实现CsvToBeanFilter 接口

测试结果

(官网)csv官方文档

(官网)CSVParserBuilder——CSVParser的目的是获取单个字符串并根据分隔符,引号和转义字符将其解析为其元素。

(官网)CSVReaderBuilder类

(理论)原CSV类库:OpenCSV

(API)用opencsv文件读写CSV文件

(API)opencsv4.0 自定义规则


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/6077825.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-14
下一篇 2023-03-14

发表评论

登录后才能评论

评论列表(0条)

保存