分类

csv文件解析工具

csv文件解析工具 xx

大小:12KB更新日期:2013/07/11

类别:系统软件语言:简体中文

已下架

    这个csv文件解析工具 包非常好,能处理特殊字符和换行符的问题,自己写的话很容易在特殊字符和换行符上出问题,建议用高人写的jar包。

    csv是什么所谓“CSV”,是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件。 我们使用SuperCSV来解析CSV文件, Super CSV是一个用于处理CSV文件的Java开源项目。它完全围绕面向对象的思想进行设计,因此可以利用你的面向对象代码来使得处理CSV文件变得更加简 易。它支持输入/输出类型转换、数据完整性校验,支持从任何地方以任何编码读写数据,只要提供相应的Reader与Writer对象。可配置分割符,空格 符号和行结束符等。



    1. 环境
    jdk1.6
    SuperCSV-1.52.jar
    2. 代码import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;
    import java.util.Iterator;
    import java.util.List;

    import org.apache.log4j.Logger;
    import org.supercsv.io.CsvListReader;
    import org.supercsv.prefs.CsvPreference;

    public class CsvParser implements Iterator<List<String>>{

    private static final Logger logger = Logger.getLogger(CsvParser.class);

    private CsvListReader reader = null;
    private List<String> row = null;

    public CsvParser(String csvFile, String encoding) {
    super();
    try {
    reader = new CsvListReader(new InputStreamReader(new FileInputStream(csvFile), encoding), CsvPreference.EXCEL_PREFERENCE);
    } catch (UnsupportedEncodingException e) {
    logger.error(e.getMessage(), e);
    } catch (FileNotFoundException e) {
    logger.error(e.getMessage(), e);
    }
    }

    public boolean hasNext(){
    try {
    if(reader.getLineNumber() == 0){//
    row = reader.read();
    }
    row = reader.read();
    } catch (IOException e) {
    logger.error(e.getMessage(), e);
    }
    return row != null;
    }

    public List<String> next(){
    return row;
    }

    public void remove(){
    throw new UnsupportedOperationException("本CSV解析器是只读的.");
    }

    public void close(){
    if(reader != null){
    try {
    reader.close();
    } catch (IOException e) {
    logger.error(e.getMessage(), e);
    }
    }
    }

    /**
    * 当前行号,从1开始
    * @return int
    */
    public int getLineNumber(){
    return reader.getLineNumber() - 1;
    }

    }

    3. 测试代码

    String file = "D:\\test.csv";

    CsvParser p = new CsvParser(file, "GBK");
    while(p.hasNext()){
    List<String> row = p.next();
    System.out.println(p.getLineNumber() + " : " + row.get(0) + ", " + row.get(1));
    }
    p.close();

    显示全部

    网友评论
    我要跟贴
    精品推荐

    猜你喜欢

    • 沙威玛传奇
    • 真人互动剧情类手游
    • 最真实的警察模拟类游戏
    • 中式风格恐怖游戏
    • 末日生存打僵尸游戏

    沙威玛传奇

    沙威玛传奇是款很受玩家欢迎的手机游戏,这款游戏中有超多不同国家的美食食谱,您可以感受到土耳其的风土人情,还能用美食征服全世界的顾客!喜欢美食经营及美食制作的顾客千万不能错过。

    相关下载

    0