`
xufei0110
  • 浏览: 110916 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

java csv文件解析

阅读更多
package xufei;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/*
 * 文件规则
 * Microsoft的格式是最简单的。以逗号分隔的值要么是“纯粹的”(仅仅包含在括号之前),
 * 要么是在双引号之间(这时数据中的双引号以一对双引号表示)。
 * Ten Thousand,10000, 2710 ,,"10,000","It's ""10 Grand"", baby",10K
 * 这一行包含七个字段(fields):
 *	Ten Thousand
 *	10000
 *	 2710 
 *	空字段
 *	10,000
 *	It's "10 Grand", baby
 *	10K
 * 每条记录占一行
 * 以逗号为分隔符
 * 逗号前后的空格会被忽略
 * 字段中包含有逗号,该字段必须用双引号括起来。如果是全角的没有问题。
 * 字段中包含有换行符,该字段必须用双引号括起来
 * 字段前后包含有空格,该字段必须用双引号括起来
 * 字段中的双引号用两个双引号表示
 * 字段中如果有双引号,该字段必须用双引号括起来
 * 第一条记录,可以是字段名
 */
/** 

 * <p>タイトル: xufei.CSVAnalysis.java</p>
 * <p>説明: </p>
 * <p>著作権: Copyright (c) 2006</p>
 * <p>会社名: technodia</p>
 * @author	徐飞
 * @version 1.0
 * createDate Aug 11, 2008
 * 修正履歴
 * 修正日      修正者       修正理由
 */
public class CSVAnalysis {
	private InputStreamReader fr = null;
	private BufferedReader br = null;

	public CSVAnalysis(String f) throws IOException {
		fr = new InputStreamReader(new FileInputStream(f));
	}

	/**
	 * 解析csv文件 到一个list中
	 * 每个单元个为一个String类型记录,每一行为一个list。
	 * 再将所有的行放到一个总list中
	 * @return
	 * @throws IOException
	 */
	public List<List<String>> readCSVFile() throws IOException {
		br = new BufferedReader(fr);
		String rec = null;//一行
		String str;//一个单元格
		List<List<String>> listFile = new ArrayList<List<String>>();
		try {			
			//读取一行
			while ((rec = br.readLine()) != null) {
				Pattern pCells = Pattern
						.compile("(\"[^\"]*(\"{2})*[^\"]*\")*[^,]*,");
				Matcher mCells = pCells.matcher(rec);
				List<String> cells = new ArrayList<String>();//每行记录一个list
				//读取每个单元格
				while (mCells.find()) {
					str = mCells.group();
					str = str.replaceAll(
							"(?sm)\"?([^\"]*(\"{2})*[^\"]*)\"?.*,", "$1");
					str = str.replaceAll("(?sm)(\"(\"))", "$2");
					cells.add(str);
				}
				listFile.add(cells);
			}			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (fr != null) {
				fr.close();
			}
			if (br != null) {
				br.close();
			}
		}
		return listFile;
	}

	public static void main(String[] args) throws Throwable {
		CSVAnalysis parser = new CSVAnalysis("c:/test2.csv");
		parser.readCSVFile();
	}
}




从网上找到的一些信息, 再从新组织了一下。
处理异常部分没有写,应该根据不同的应用来写。



这个是外国人写的CSV读写封装类 可以用来学些 附件里有一个下载好的包
http://sourceforge.net/projects/javacsv/
分享到:
评论
2 楼 battle_cry 2010-01-09  
有没有支持JDK1.4的,这些只能在JDK1.5以上才支持,才正确的解析,1.4里面解析出来不正确,谢谢
1 楼 bxxk 2009-07-10  
最后一个字段解析不出来。 麻烦改改好么?

相关推荐

    Java解析CSV文件

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

    java csv文件读取工具类

    一个非常好用的csv文件操作工具

    java操作csv文件(读、写)

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

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

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

    javacsv_CsvReader:解析CSV文件

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

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

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

    csv文件解析工具(javacsv.jar包)

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

    读取创建CSV文件并自动解析文件编码方式

    本文将深入探讨如何读取和创建CSV文件,并特别关注自动解析文件编码方式这一关键环节。我们将使用Java语言进行示例,同时引入第三方库来辅助处理编码问题。 首先,创建CSV文件的基本过程涉及将数据写入具有特定分隔...

    java使用javacsv读取csv文件 导入Mysql数据库

    这个过程涉及几个关键步骤,包括读取CSV文件、解析数据、建立与数据库的连接以及执行SQL插入语句。本篇文章将详细讲解如何使用javacsv库来实现这一功能。 首先,`javacsv`是一个轻量级的Java库,专门用于处理CSV...

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

    2. CSV文件解析: CSV(Comma Separated Values)文件是一种常见的数据交换格式,通常用于导入和导出表格数据。Java中,可以使用OpenCSV或者Apache Commons CSV库来解析CSV文件。解析过程通常包括打开文件、创建...

    java对csv文件进行读写操作

    在Java中,处理CSV文件通常需要借助第三方库,如本示例中的`javacsv.jar`。`javacsv`是由Dave Taylor创建的一个小型库,专门用于读写CSV文件。下面我们将详细探讨如何使用Java和`javacsv`库对CSV文件进行读写操作。 ...

    java 导出csv文件并上传sftp

    使用univocity-parsers,我们可以方便地将Java对象转换为CSV格式,或者从CSV文件中解析数据。以下是使用该库创建CSV文件的基本步骤: 1. 添加依赖:在你的项目中,你需要引入univocity-parsers的Maven或Gradle依赖...

    CSV文件格式解析器

    本项目实现了一个基于C++的CSV文件解析器,采用有限状态机(Finite State Machine, FSM)的设计模式。有限状态机是一种计算模型,用于描述和设计具有固定数量状态的系统,这些状态可以根据特定输入进行转换。在CSV...

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

    本篇文章将深入讲解如何使用Java解析Excel(包括Excel 2003和2007格式)和CSV文件,并将解析的数据映射到Java Bean,以便后续的数据处理和存储。 首先,我们需要了解如何在Java中处理文件上传。在Servlet环境中,...

    javacsv-2.1.jar

    在Java中,处理CSV文件通常需要手动分割字符串或使用正则表达式,而JavaCSV库提供了一个更高效、更便捷的方法。该库的核心类包括`CSVReader`和`CSVWriter`,它们分别用于读取和写入CSV数据。 `CSVReader`类允许...

    java实现导出csv文件并上传sftp

    本篇文章将深入探讨如何使用Java实现CSV文件的生成,并将其通过SFTP(Secure File Transfer Protocol)协议上传到指定服务器。 首先,我们要介绍的是用于生成CSV文件的库:univocity-parsers。这是一个高效、灵活且...

    Java避免UTF-8的csv文件打开中文出现乱码的方法

    Java避免UTF-8的csv文件打开中文出现乱码的方法 在Java中,避免UTF-8的csv文件打开中文出现乱码的方法是非常重要的。csv文件是 comma separated values 的缩写,常用于数据交换和导入导出操作。然而,在Java中读取...

    Java操作csv文件

    如果CSV文件包含特殊字符、逗号分隔的字段或者引用的字段(如`"Field, with comma"`),Apache Commons CSV库可以正确解析它们。例如,`CSVFormat`类允许你定义分隔符、引用字符、行结束符等。 6. **错误处理**: ...

    java csv共用javacsv.jar.zip

    在Java中处理CSV文件时,`javacsv`库是一个实用的工具,它提供了一系列方便的API来简化CSV文件的读写操作。这个名为"java csv共用javacsv.jar.zip"的压缩包,包含了一个名为`javacsv.jar`的库文件,可以被Java项目...

    java 读写 csv 文件

    本篇文章将深入探讨如何使用Java来读取和写入CSV文件,并介绍一些通用的接口和方法。 首先,Java标准库并未提供专门处理CSV的类,但我们可以借助第三方库如Apache Commons CSV、OpenCSV或Java 8及以上版本的内置`...

Global site tag (gtag.js) - Google Analytics