日常里经常有解析/写入CSV(comma separated value)的情况,尤其在老的应用系统中,那时混沌初开,天地之间还没有xml、随时随地可访问的数据库等等高级动物,人们在两个物理分开的系统之间转移数据的方法就是导出成某种格式的文件放进磁盘拿到另一个地方导入(耳边突然响起以前同事的口头禅:导啊导啊导出一头驴来...)。CSV是文本文件,可以直接打开查看,方便的进行解析,往往成为中间格式的首选(当然还有excel之类)。
所以解析/写入CSV是一个通用系统的工具包中应该包含的功能。
在java中的实现我觉得还有以下几点:
1、应该转换成为一种通用的数据格式以保证千变万化的应用对数据的需求,也就是说,最好该数据格式直接继承collection或者就是基本集合框架中的一员。
2、除了csv外,其他结构化类型的数据文件格式(xsl,xml,dbf...)应可以用类似方法解析/写入,用户无需学习实现解析/写入各种数据文件的API
3、考虑到文件中的记录数可能成千上万,解析时的效率会很低,可能需要考虑一种解析/读取/修改记录的策略,网上有种解决方案是将csv文件当作jdbc数据源来处理
4、csv文件的编码问题
参考:
1、java collection framework
http://www.dalianit.com/edu/|80|85|90|49|80|66|62|62|.html
2、java.sql.resultset操作数据的方法
3、一个文档代码齐全的解析包
http://ostermiller.org/utils/CSV.html
所以解析/写入CSV是一个通用系统的工具包中应该包含的功能。
在java中的实现我觉得还有以下几点:
1、应该转换成为一种通用的数据格式以保证千变万化的应用对数据的需求,也就是说,最好该数据格式直接继承collection或者就是基本集合框架中的一员。
2、除了csv外,其他结构化类型的数据文件格式(xsl,xml,dbf...)应可以用类似方法解析/写入,用户无需学习实现解析/写入各种数据文件的API
3、考虑到文件中的记录数可能成千上万,解析时的效率会很低,可能需要考虑一种解析/读取/修改记录的策略,网上有种解决方案是将csv文件当作jdbc数据源来处理
4、csv文件的编码问题
参考:
1、java collection framework
http://www.dalianit.com/edu/|80|85|90|49|80|66|62|62|.html
2、java.sql.resultset操作数据的方法
3、一个文档代码齐全的解析包
http://ostermiller.org/utils/CSV.html