`
yuancihang
  • 浏览: 145160 次
  • 性别: Icon_minigender_1
  • 来自: 洛阳
社区版块
存档分类
最新评论

解析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();

分享到:
评论
2 楼 xm_koma 2012-11-09  
解析CSV文件不是只需要按照逗号分隔的txt解析就完了吗?为什么弄这么复杂?
1 楼 紫藤萝 2011-07-14  
找了很久终于解决了这个问题,谢谢lz

相关推荐

    Qt解析CSV文件

    在描述中提到的"CSVparser类"可能是项目中自定义的一个类,用于读取和解析CSV文件。通常,这个类会逐行读取文件,然后根据逗号分隔符分割每一行,将数据存储在某种结构(如QStringList或std::vector)中。 接下来,...

    完整实现ftp上传与下载并解析csv文件

    Java中,可以使用OpenCSV或者Apache Commons CSV库来解析CSV文件。解析过程通常包括打开文件、创建解析器、迭代读取每一行,然后将每一行的数据转换为所需的数据结构,如列表或对象实例。 3. 多文件下载与并发处理...

    js插件,快速解析csv文件

    在JavaScript环境中,处理CSV文件时,我们常常需要将其内容转化为JavaScript对象或者数组,以便进一步的数据处理和分析。 Papa Parse是一个强大的JavaScript库,专门用于快速、高效地解析和生成CSV数据。这个插件...

    Java解析CSV文件

    本篇将详细介绍如何在Java中解析CSV文件,并以给定的"Java解析CSV文件"主题为例,结合提供的资源——`lucky_number_format.csv`、`javacsv-2.0.jar`和`CsvUtil.java`进行深入探讨。 首先,我们来看`javacsv-2.0.jar...

    java操作csv文件(读、写)

    在做项目的时候,发现使用POI无法解析以csv文件结尾的文件,虽然csv文件能用Excel打开,但是csv文件没有像Excel一样有规定的电子表格形式,故使用POI无法解析csv文件,在网上找了一下,发现java有提供java csv文件来...

    java 解析csv文件例子,csv文件 中文乱码问题

    本篇文章将详细探讨如何在Java中解析CSV文件,并解决中文乱码的问题。 首先,我们需要了解如何使用Java的标准库`java.io`和`java.nio`来读取CSV文件。最常用的是使用`BufferedReader`配合`Scanner`或者`Files.lines...

    解析CSV文件工具

    虽然这个实现较为基础,但它展示了手动解析CSV文件的基本思路。 标签“源码”和“工具”暗示了本文可能会涉及编写自己的CSV处理代码或者讨论现有的CSV处理工具。无论是编写自己的解析器还是利用现有库,理解CSV文件...

    spark解析csv文件,存入数据库

    在这部分文件内容中,我们首先看到了对Spark解析CSV文件并存入数据库的一个简单介绍。接下来,会逐步展开几个重要知识点,包括Spark框架的基础、如何使用Spark读取和解析CSV文件、数据处理的相关操作以及如何将处理...

    纯javascript解析CSV文件使用并转成HTML表格

    本篇文章将详细探讨如何使用纯JavaScript解析CSV文件,并将其内容转换为HTML表格。 首先,让我们了解CSV文件的基本结构。CSV文件由行组成,每行由一个或多个字段组成,字段之间用逗号分隔。在某些情况下,如果字段...

    解析csv文件,获取需要的信息

    在解析CSV文件获取所需信息时,通常涉及以下知识点: 1. **文件读取**:首先,你需要使用编程语言提供的文件操作函数打开CSV文件。例如,在Python中,可以使用内置的`open()`函数以读取模式打开文件,然后使用`csv`...

    csv解析 javacsv2.1解析csv文件的方法

    在Java中,处理CSV文件通常需要借助第三方库,如本案例中的`javacsv`库,版本2.1。这个库提供了一系列方法来帮助我们方便地解析和生成CSV数据。 `javacsv`库由Jonathan Leffler开发,它允许开发者通过简单的API读取...

    java读取csv文件示例分享(java解析csv文件)

    以下是一个简单的Java程序示例,演示如何读取并解析CSV文件。 首先,我们需要了解CSV文件的基本结构。CSV文件是由行和列组成的数据文件,每一行代表一个记录,列之间用逗号分隔。在这个例子中,我们有一个包含三列...

    javacsv_CsvReader:解析CSV文件

    `javacsv`库是处理CSV文件的一种工具,特别是`CsvReader`类,它提供了方便的方法来读取和解析这些文件。 `CsvReader`是`javacsv`库中的核心类,用于读取CSV文件并将其内容转换为Java对象。这个库由`csv`和`java`...

    CSV-Parsing:使用InputStream类解析csv文件

    本主题主要关注使用`InputStream`类来解析CSV文件,尤其适合处理大型文件,如含有超过10万行的CSV。 在Java中,`InputStream`是所有字节输入流的基础类,用于读取连续的字节序列。在处理大型CSV文件时,直接使用`...

    csv文件解析小工具 可直接运行

    解析CSV文件的主要挑战在于处理各种边缘情况,例如: 1. **字段内包含逗号**:当某个字段值本身含有逗号时,通常会用双引号将其包围,例如 `"New York, NY"`。 2. **字段内包含换行符**:类似地,如果字段内有换行...

    一个简单的python解析CSV文件处理

    一个简单的python解析CSV文件处理

    文件上传,java解析excel和csv 转javabean

    解析CSV的基本步骤如下: 1. 创建CSVReader,传入文件流或文件路径。 2. 使用`readNext()`方法逐行读取CSV数据。 3. 分割每行数据,根据逗号或其他分隔符提取字段。 4. 同样地,将这些字段映射到Java Bean。 映射...

    读取CSV文件

    了解如何有效地读取和解析CSV文件是每个Java开发者必备的技能之一,这将有助于你在处理大量数据时更加游刃有余。在使用过程中如果遇到任何问题,不要犹豫,大胆提问,社区的力量会帮你找到答案。

    CsvHelper 30.0.1(Unity解析CSV文件)

    CsvHelper 是一个强大的开源库,专门用于在 .NET 应用程序中解析和写入 CSV 文件。这个库的最新版本是 30.0.1,它为 Unity 开发者提供了一种简单、高效的手段来处理 CSV 数据。CSV(Comma Separated Values)是一种...

Global site tag (gtag.js) - Google Analytics