java 操作 csv文件
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文件的更多相关文章
- java操作csv文件之javacsv.jar应用
csv文件是分隔文件,如果使用java的io流来写,比较麻烦,这里为大家提供一个javacsv的jar包,这个很方便操作csv文件. 下载地址:https://pan.baidu.com/s/1i46 ...
- Java操作csv文件
以前就一直很想搞懂一个问题就是java如何读取和写入csv文件,现在要花时间总结一波. 主要使用的javaCSV.jar javaCSV API:http://javacsv.sourceforge. ...
- 【转】Java操作CSV文件导入导出
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- Java生成CSV文件实例详解
本文实例主要讲述了Java生成CSV文件的方法,具体实现步骤如下: 1.新建CSVUtils.java文件: package com.saicfc.pmpf.internal.manage.utils ...
- 用javacsv API 来操作csv文件
javacsv是国外开发的一个比较好的操作csv文件的API,这里简单讲一下用法. 先下载javacsv2.0.zip的文件,解压后,把javacsv.jar 添加到项目中. 本站下载地址: htt ...
- POI以SAX方式解析Excel2007大文件(包含空单元格的处理) Java生成CSV文件实例详解
http://blog.csdn.net/l081307114/article/details/46009015 http://www.cnblogs.com/dreammyle/p/5458280. ...
- C#操作.csv文件Demo
1.使用OleDB操作.csv文件,比较费时 public static DataTable GetDataTableFromCsv(string path,bool isFirstRowHeader ...
- Java操作属性文件,支持新增或更新多个属性
Java操作属性文件.支持新增或更新多个属性 一.更新或新增单个属性的方法 /** * 写入properties信息 * @param filePath 绝对路径(包含文件名称和后缀名) * @par ...
- java读取CSV文件添加到sqlserver数据库
在直接将CSV文件导入sqlserver数据库时出现了错误,原因还未找到,初步怀疑是数据中含有特殊字符.于是只能用代码导数据了. java读取CSV文件的代码如下: package experimen ...
随机推荐
- js加密(四)landChina
1. url:https://www.landchina.com/default.aspx?tabid=226 2. target: 3. 简单分析 3.1 打开fiddler和chorme无痕浏览器 ...
- 【网易官方】极客战记(codecombat)攻略-地牢-恐惧之门
关卡连接: https://codecombat.163.com/play/level/dread-door 恐惧之门后藏满宝藏 简介: while-true 循环可以使用任何方法,如: while ...
- python 变量的赋值【内存地址】
注意: python所有的数据都是对象,变量只是指向一个对象的地址,一旦将变量的值或者类型改变,变量指向的地址就有可能发生变化 这个特性在使用默认参数的时候一定要注意
- 版本控制gitlab
目录 1. 版本控制介绍 2. gitlab部署 3. gitlab管理 1. 版本控制介绍 版本控制是指对软件开发过程中各种程序代码.配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一 ...
- 1.1Jmeter学习网站
在网上找到一些关于Jmeter学习的博客等,在此标记 一. chinaunix的一篇博客,讲的蛮详细的 http://blog.chinaunix.net/uid/26884465/cid-16819 ...
- Django中csrf_token验证原理
我多年没维护的博客园,有一篇初学Django时的笔记,记录了关于django-csrftoekn使用笔记,当时几乎是照抄官网的使用示例,后来工作全是用的flask.博客园也没有维护.直到我的博客收到了 ...
- 消息中间件技术 - 浅谈mqtt协议及其实现
作者:carter(佘虎),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 1.1概念 MQTT(MQ Telemetry ...
- Centos610-Nginx-TCP代理配置
1.安装Nginx 详见<nginx>安装 2.下载nginx_tcp_proxy_module模块 下载 wget https://github.com/yaoweibin/nginx ...
- 解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
官方说明链接: https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000736584-SciView-in-PyCh ...
- CentOS7.6配置ip
查看CentOS版本信息 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release (Core) 配置ip [root@loca ...