CSV是逗号分隔文件(Comma Separated Values)的首字母英文缩写,是一种用来存储数据的纯文本格式,通常用于电子表格或数据库软件。在 CSV文件中,数据“栏”以逗号分隔,可允许程序通过读取文件为数据重新创建正确的栏结构,并在每次遇到逗号时开始新的一栏。

一、利用javacsv2.0操作csv文件:

package com.iflytek.demo;  

import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List; import com.csvreader.CsvReader;
import com.csvreader.CsvWriter; /**
* 利用javacsv2.0做导入导出csv文件工具类<br/>
*
*
* @author kpchen
*
*/
public class CSVUtil { static char separator = ','; public static void main(String[] args) throws Exception { // 测试导出
String filePath = "D:/test.csv";
List<String[]> dataList = new ArrayList<String[]>();
for (int i = 0; i < 10; i++) {
dataList.add(new String[] { "0" + i, "小明" + i, "java" + i });
}
exportCsv(dataList, filePath); // 测试导入
List<String[]> datas = importCsv(filePath);
for (String[] strings : datas) {
System.out.println(strings[0]);
}
} /**
* java导入csv文件
*
* @param filePath
* 导入路径
* @return
* @throws Exception
*/
public static List<String[]> importCsv(String filePath) throws Exception {
CsvReader reader = null;
List<String[]> dataList = new ArrayList<String[]>();
try {
reader = new CsvReader(filePath, separator, Charset.forName("GBK")); // 读取表头 加上这一句是不算表头数据从第二行开始取
reader.readHeaders();
// 逐条读取记录,直至读完
while (reader.readRecord()) {
dataList.add(reader.getRawRecord().split(","));
// // 下面是几个常用的方法
// 读取一条记录
System.out.println(reader.getRawRecord());
// 按列名读取这条记录的值
System.out.println(reader.get(0));
System.out.println(reader.get(1));
System.out.println(reader.get(2));
System.out.println(reader.get(3));
}
} catch (Exception e) {
System.out.println("读取CSV出错..." + e);
throw e;
} finally {
if (null != reader) {
reader.close();
}
} return dataList;
} /**
* java导出cvs文件
*
* @param dataList
* 数据集
* @param filePath
* 导出路径
* @return
* @throws Exception
*/
public static boolean exportCsv(List<String[]> dataList, String filePath) throws Exception {
boolean isSuccess = false;
CsvWriter writer = null;
FileOutputStream out = null;
try {
out = new FileOutputStream(filePath, true);
writer = new CsvWriter(out, separator, Charset.forName("GBK"));
for (String[] strs : dataList) {
writer.writeRecord(strs);
} isSuccess = true;
} catch (Exception e) {
System.out.println("生成CSV出错..." + e);
throw e;
} finally {
if (null != writer) {
writer.close();
}
if (null != out) {
try {
out.close();
} catch (IOException e) {
System.out.println("exportCsv close Exception: " + e);
throw e;
}
}
} return isSuccess;
} }

  二、利用流操作csv文件

package com.iflytek.demo;  

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List; public class CSVUtil2 { public static void main(String[] args) {
// 测试 导出
// List<String> dataList = new ArrayList<String>();
// dataList.add("1,张三,男");
// dataList.add("2,李四,男");
// dataList.add("3,小红,女");
// boolean isSuccess = exportCsv(new File("D:/test.csv"), dataList);
// System.out.println(isSuccess); // 测试 导入
List<String> dataList = importCsv(new File("D:/test.csv"));
if (dataList != null && !dataList.isEmpty()) {
for (String data : dataList) {
System.out.println(data);
}
}
} /**
* 导出
*
* @param file
* csv文件(路径+文件名),csv文件不存在会自动创建
* @param dataList
* 数据
* @return
*/
public static boolean exportCsv(File file, List<String> dataList) {
boolean isSucess = false; FileOutputStream out = null;
OutputStreamWriter osw = null;
BufferedWriter bw = null;
try {
out = new FileOutputStream(file);
osw = new OutputStreamWriter(out);
bw = new BufferedWriter(osw);
if (dataList != null && !dataList.isEmpty()) {
for (String data : dataList) {
bw.append(data).append("\r\n");
}
}
isSucess = true;
} catch (Exception e) {
isSucess = false;
} finally {
if (bw != null) {
try {
bw.close();
bw = null;
} catch (IOException e) {
e.printStackTrace();
}
}
if (osw != null) {
try {
osw.close();
osw = null;
} catch (IOException e) {
e.printStackTrace();
}
}
if (out != null) {
try {
out.close();
out = null;
} catch (IOException e) {
e.printStackTrace();
}
}
} return isSucess;
} /**
* 导入
*
* @param file
* csv文件(路径+文件)
* @return
*/
public static List<String> importCsv(File file) {
List<String> dataList = new ArrayList<String>(); BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(file));
String line = "";
while ((line = br.readLine()) != null) {
dataList.add(line);
}
} catch (Exception e) {
} finally {
if (br != null) {
try {
br.close();
br = null;
} catch (IOException e) {
e.printStackTrace();
}
}
} return dataList;
} }

  

源码:http://pan.baidu.com/s/1nt1r7ap

参考:http://write.blog.csdn.net/postedit/49755535

java 操作 csv文件的更多相关文章

  1. java操作csv文件之javacsv.jar应用

    csv文件是分隔文件,如果使用java的io流来写,比较麻烦,这里为大家提供一个javacsv的jar包,这个很方便操作csv文件. 下载地址:https://pan.baidu.com/s/1i46 ...

  2. Java操作csv文件

    以前就一直很想搞懂一个问题就是java如何读取和写入csv文件,现在要花时间总结一波. 主要使用的javaCSV.jar javaCSV API:http://javacsv.sourceforge. ...

  3. 【转】Java操作CSV文件导入导出

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  4. Java生成CSV文件实例详解

    本文实例主要讲述了Java生成CSV文件的方法,具体实现步骤如下: 1.新建CSVUtils.java文件: package com.saicfc.pmpf.internal.manage.utils ...

  5. 用javacsv API 来操作csv文件

    javacsv是国外开发的一个比较好的操作csv文件的API,这里简单讲一下用法. 先下载javacsv2.0.zip的文件,解压后,把javacsv.jar 添加到项目中.  本站下载地址: htt ...

  6. POI以SAX方式解析Excel2007大文件(包含空单元格的处理) Java生成CSV文件实例详解

    http://blog.csdn.net/l081307114/article/details/46009015 http://www.cnblogs.com/dreammyle/p/5458280. ...

  7. C#操作.csv文件Demo

    1.使用OleDB操作.csv文件,比较费时 public static DataTable GetDataTableFromCsv(string path,bool isFirstRowHeader ...

  8. Java操作属性文件,支持新增或更新多个属性

    Java操作属性文件.支持新增或更新多个属性 一.更新或新增单个属性的方法 /** * 写入properties信息 * @param filePath 绝对路径(包含文件名称和后缀名) * @par ...

  9. java读取CSV文件添加到sqlserver数据库

    在直接将CSV文件导入sqlserver数据库时出现了错误,原因还未找到,初步怀疑是数据中含有特殊字符.于是只能用代码导数据了. java读取CSV文件的代码如下: package experimen ...

随机推荐

  1. C++泛型算法总结

    1 accumulate(b,e,T) 累和(基础和为T) 注意T的类型必须和序列中元素类型相同,如double序列后面的T就必须是0.0,如果是0就会把序列中的数当成int进行求和 2 count( ...

  2. 股票数据Scrapy爬虫

    功能描述: 技术路线:scrapy 目标:获取上交所和深交所所有股票的名称和交易信息 输出:保存到文件中 数据网站的确定 获取股票列表: 东方财富网:http://quote.eastmoney.co ...

  3. Django中csrf_token验证原理

    我多年没维护的博客园,有一篇初学Django时的笔记,记录了关于django-csrftoekn使用笔记,当时几乎是照抄官网的使用示例,后来工作全是用的flask.博客园也没有维护.直到我的博客收到了 ...

  4. CentOS7安装jdk教程

    引言Oracle JDK和OpenJDK的简单介绍Oracle JDK是基于Java标准版规范实现的,以二进制产品的形式发布.它支持多种操作系统,如Windows,Linux,Solaris,MacO ...

  5. dbGet(三)

    inst flat design下的instance Parent Object group, hInst, instTerm, io, pBlkg, ptn, rBlkg, sdp, topCell ...

  6. .NET解所有相机RAW格式照片

    再聊.NET解相机RAW格式照片 上次我发了一篇文章<用.NET解索尼相机ARW格式照片>,提到通过安装Sony Raw File Decoder的方式,然后调用Windows Imagi ...

  7. 吴裕雄 PYTHON 神经网络——TENSORFLOW 单隐藏层自编码器设计处理MNIST手写数字数据集并使用TensorBord描绘神经网络数据

    import os import numpy as np import tensorflow as tf import matplotlib.pyplot as plt from tensorflow ...

  8. Scrapy模拟登陆

    1. 为什么需要模拟登陆? #获取cookie,能够爬取登陆后的页面 2. 回顾: requests是如何模拟登陆的? #1.直接携带cookies请求页面 #2.找接口发送post请求存储cooki ...

  9. Python学习笔记(01)

    参考书:<Python编程:从入门到实践> 还有其他 Chapter01 print print(a,b,sep="|") sep规定输出间的间隔 print(“Pyt ...

  10. Javascript中forEach的异步问题

    某天尝试了下在 forEach函数中调用 await Promise() 方法,如下: var arr = [1,2,3] arr.forEach(async (v,i,a)=>{ await ...