当前位置:七道奇文章资讯编程技术Java编程
日期:2011-04-13 09:21:00  来源:本站整理

<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编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .