设为首页 加入收藏

TOP

Java CSV读--Read And Parse CSV File In Java(一)
2014-11-24 07:20:35 】 浏览:4677
Tags:Java CSV --Read And Parse File

维基百科: 点击打开链接 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须象二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。

举例-基本规则及举例--来源维基百科(注意逗号,引号,换行)点击打开链接

年份 品牌 型号 描述 价格
1997 Ford E350 ac, abs, moon 3000.00
1999 Chevy Venture Extended Edition 4900.00
1999 Chevy Venture Extended Edition, Very Large 5000.00
1996 Jeep Grand Cherokee MUST SELL!
air, moon roof, loaded
4799.00

以上数据表可以以CSV格式表示如下:

Year,Make,Model,Description,Price
1997,Ford,E350,ac, abs, moon,3000.00
1999,Chevy,Venture Extended Edition,,4900.00
1999,Chevy,Venture Extended Edition, Very Large,,5000.00
1996,Jeep,Grand Cherokee,MUST SELL!
air, moon roof, loaded,4799.00

以下为代码事例:

一.读CSV文件:

package com.jiangge.csv;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

//1.0.0.0,1.0.0.255,16777216,16777471,AU,Australia
//1.0.1.0,1.0.3.255,16777472,16778239,CN,China
//1.0.4.0,1.0.7.255,16778240,16779263,AU,Australia
//1.0.8.0,1.0.15.255,16779264,16781311,CN,China
//1.0.16.0,1.0.31.255,16781312,16785407,JP,Japan
//1.0.32.0,1.0.63.255,16785408,16793599,CN,China
//1.0.64.0,1.0.127.255,16793600,16809983,JP,Japan
//1.0.128.0,1.0.255.255,16809984,16842751,TH,Thailand


public class ReadCVSMkYong {
	  public static void main(String[] args) {
		ReadCVSMkYong obj = new ReadCVSMkYong();
		obj.run();
	  }
	 
	  public void run() {
		String csvFile = c:/GeoIPCountryWhois.csv;
		BufferedReader br = null;
		String line = ;
		String cvsSplitBy = ,;
	 
		try {
			br = new BufferedReader(new FileReader(csvFile));
			while ((line = br.readLine()) != null) {
			    // use comma as separator
				String[] country = line.split(cvsSplitBy);
				System.out.println(Country [code=  + country[4]  +  , name= + country[5] + ]);
			}
	 
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (br != null) {
				try {
					br.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	 
		System.out.println(Done);
	  }
	 
	}
	

控制台输出结果:

Country [code= AU , name=Australia]
Country [code= CN , name=China]
Country [code= AU , name=Australia]
Country [code= CN , name=China]
Country [code= JP , name=Japan]
Country [code= CN , name=China]
Country [code= JP , name=Japan]
Country [code= TH , name=Thailand]
Done

核心代码其实很简单:

	try {
			br = new BufferedReader(new FileReader(csvFile));
			while ((line = br.readLine()) != null) {
				String[] country = line.split(cvsSplitBy);  // use comma as separator 使用逗号做为分隔符
				System.out.println(Country [code=  + country[4]  +  , name= + country[5] + ]);
			}
	 
		}

二.读CSV文件,使用 Map 去重

package com.jiangge.csv;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
 

/**
 * This example show you how to use Map to remove the duplicated country code and country name.
 * @author jiangge
 */
public class ReadCVSMkYong2 {
  public static void main(String[] args) {
	  ReadCVSMkYong2 obj = new ReadCVSMkYong2();
	  o
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇String - 兴趣解读 下一篇JAVA基础学习之命令行方式、配置..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目