<b>浅谈Java读取Csv实践</b>[Java编程]
本文“<b>浅谈Java读取Csv实践</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
Csv文件,逗号脱离的常用数据文件格局,默答应以用Office软件翻开.
维基百科对CSV的具体描写:
http://zh.wikipedia.org/wiki/CSV
看项目中从前的处理方法是直接用用java IO类库读取Csv文件,实际处理中发现Csv文件本身包含了对各种特别字符的处理信息.最常见的比方:
1. 对包含特别字符的字符串数据首尾加双引号
2. 对数据中的单个双引号前加单个双引号
别的...
所以用Java IO读到的字符串满是经过处理后的字符串,在某些场景下是不符合预期需求的.比方我需求的是不做任何处理的原始内容.
项目中另一种常见的文件格局Excel用了POI来处理,但是POI不支持Csv格局,于是找到了javacsv.
代码很简单:
Java代码
public List importCsv(String file) {
List list = new ArrayList();
CsvReader reader = null;
try {
//初始化CsvReader并指定列脱离符和字符编码
reader = new CsvReader(file, ',', Charset.forName("GBK"));
while (reader.readRecord()) {
//读取每行数据以数组情势返回
String[] str = reader.getValues();
if (str != null && str.length > 0) {
if (str[0] != null && !"".equals(str[0].trim())) {
list.add(str);
}
}
}
} catch (FileNotFoundException e) {
log.error("Error reading csv file.",e);
} catch (IOException e) {
log.error("",e);
}
finally{
if(reader != null)
//关闭CsvReader
reader.close();
}
return list;
}
以上代码有几个要点:
1 初始化CsvReader时指定脱离符和字符编码,假如不指定,默许辨别为逗号和ISO-8859-1,我用了GBK,具体利用时要看当时的字符编码而定.
2 读取每行数据,返回字符串数组,数组内的次序即文件数据列的次序
3 最后记得关闭CsvReader
是不是很简单,返回的数组格局也恰好是我想要的,并且拿到是原始的数据,没有经过特别字符处理.
有些童鞋质疑特别字符未经处理,插到数据库会出错,其实大可没必要我们手工处理,一些底子组件比方JDBC的preparedstatement已经包含了对特别字符的处理,我们只要以绑定参数的情势来传送这些包含特别字符的数据便可以.常用的长期化框架底层也封装了JDBC,自然也对特别字符做了处理.
附javacvs2.0.zip链接:http://shaka.iteye.com/blog/983282
以上是“<b>浅谈Java读取Csv实践</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |