python读取csv文件_Java 用注解实现通用功能-csv文件的读取为例

作者:撸撸呀

引言

使用java注解可以实现一些共通的功能,假设有几种格式的csv文件,编码,分隔符,头部行数之类的定义各不相同,但我们想统一的处理他们,那就需要一个共通的方法。

也许有人说,不用注解,只用个共通工具类不就行了吗?但是注解让代码更优雅,而且当你增加其他一些需求,比如其他csv格式的时候,只需要加几个注解就能轻松的扩张你的功能。

那么看代码吧。

1. 定义注解

定义一个csv格式的注解,包含文件的分隔符,编码等等信息。如果业务需求增多,可以继续添加功能,比如换行符之类。

80b7dde79339b993e37ec65acf041c23.png

2. 使用注解

这里为了扩展性先定义了一个空的接口。如果需要扩展就实现该接口。

public interface CSVFormat { }

FreeTextCSVFormat实现了CSVFormat接口,并使用了FileFormat的注解,分隔符,编码等都使用默认值,并没有进行特别的设置。

d16ff744bfa4570c26d085dc70067f21.png


3. 处理注解,读取文件中的一行数据

根据注解的设置,读取一行数据。不管是什么编码,或者换行符,都是用通用的readDataLine()方法。

62984476b21b5273a632fc857e7c7472.png
6909a2f6b2ecca5e28c657e69d1f56de.png

4. 功能扩展-读取数据,并封装到类中

刚才只是读取一行,返回字符串数组。但是我们有时候想把数据封装到类里,比如上述的FreeTextCSVFormat类。那么可以再定义一个文件内容的注解。

1ba7300cb14d9a6522878ab33cdd0f90.png

FreeTextCSVFormat,添加FileColumn注解。

a55b07649ec5ba4605bb1d9ac7e533f8.png

最后,可以使用反射获取columnIdex,并把读取的内容封装进去。具体实现就不贴出来了。

结语

使用注解能够提升扩展性,比如添加一种新的csv样式,并不需要修改读取文件的方法,只需要添加使用注解的类就可以了。这样做能够更优雅,还能帮你了解java反射,毕竟平时用框架的注解很多,自己写的机会却很少。

本皮是一个有着5年工作经验的程序员,关于Java,自己有做材料的整合,一个完整学习Java的路线,学习材料和工具。需要的伙伴可以私信我,发送“交流”后就可免费获取。对于学习Java有任何问题(学习方法,学习效率,如何就业)都可以问我。希望你也能凭自己的努力,成为下一个优秀的程序员!

3948374b20b3f9a6122bb9c37b677f5c.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值