- Notifications
You must be signed in to change notification settings - Fork7
The csv read/write tool based on java annotation.(基于 java 注解的 CSV 文件读写框架工具。)
License
houbb/csv
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
CSV 是基于 java 注解的 csv 读写框架,让你更加优雅方便的操作 csv。
简单看了下,这两个框架提供的特性都非常的基础。
以前觉得 csv 文件的读写非常简单,就懒得封装。
最近一个月写了两次 csv 文件相关的东西,发现要处理的细节还是有的,还浪费比较多的时间。
比如:
UTF-8 中文编码使用 excel 打开乱码,因为缺少 BOM 头。
不同类型字段转化为字符串,顺序的指定,head 头的指定,如果手写都会很繁琐。
读取的时候最后
,后无元素,split 会缺失等。
为了解决上述问题,此框架应运而生。
Fluent 流式写法
基于 java 注解,支持自定义的转换和灵活配置
内置 8 大基本类型以及 String 类型转换
解决 Excel 直接打开,utf-8 乱码问题
支持集合、数组、Map 的存取
支持对象中内嵌其他对象
支持特殊字符转义
- 枚举值映射
支持快速简单的枚举值映射
jdk7+
maven 3.x
<dependency> <groupId>com.github.houbb</groupId> <artifactId>csv</artifactId> <version>0.2.0</version></dependency>
直接转换为 string list.
finalStringpath ="stringlist.csv";finalStringtarget ="stringlist2.csv";List<List<String>>dataList =CsvStringListHelper.read(path);System.out.println(dataList);CsvStringListHelper.write(target,dataList);
- stringlist.csv
id,name,age1,"user,1",102,"user,1",201- dataList 字符串列表
[[id, name, age], [1, user,1, 10], [2, user,1, 201]]finalStringpath ="src\\test\\resources\\helper.csv";CsvHelper.write(buildCommonList(),CsvWriters.filePath(path));
- 文件生成
name,age,score,money,sex,level,id,status,coin你好,10,60.0,200.0,true,4,1,Y,1- 读取文件
finalStringpath ="src\\test\\resources\\common.csv";List<User>userList =CsvHelper.read(path,User.class);Assert.assertEquals("[User{name='你好', age=10, score=60.0, money=200.0, sex=true, level=4, id=1, status=Y, coin=1}]",userList.toString());
- 读取字符串列表
也支持直接读取字符串列表。
List<String>lines =Arrays.asList("name,age,score,money,sex,level,id,status,coin","你好,10,60.0,200.0,true,4,1,Y,1");List<User>userList =CsvHelper.read(lines,User.class);Assert.assertEquals("[User{name='你好', age=10, score=60.0, money=200.0, sex=true, level=4, id=1, status=Y, coin=1}]",userList.toString());
其中使用的属性如下:
- User.java
演示基本类型的转换
publicclassUser {privateStringname;privateintage;privatefloatscore;privatedoublemoney;privatebooleansex;privateshortlevel;privatelongid;privatecharstatus;privatebytecoin;//Getter & Setter & toString()}
- 对象列表构建
/** * 构建通用测试列表 * @return 列表 */privateList<User>buildCommonList() {Useruser =newUser();shorts =4;byteb =1;user.age(10) .name("你好") .id(1L) .score(60) .coin(b) .level(s) .money(200) .sex(true) .status('Y');returnArrays.asList(user); }
- 引入
@Order注解或者新增order()注解属性
避免 java 反射存在的字段顺序和声明顺序不一致问题
- 使用 converter 项目统一优化
读写转换等操作统一复用。
About
The csv read/write tool based on java annotation.(基于 java 注解的 CSV 文件读写框架工具。)
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.