csv操作
需要引入javacsv.jar
以下为一个完整的Utils的写法,具体输出和输入需要自己修改参数。
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.Random; import org.springframework.util.StringUtils; import com.csvreader.CsvReader;
import com.csvreader.CsvWriter; /**
* 获取和写入csv文件内容
* <p>
* @author DennyZhao
* @since 1.0.0
*/
public class CSVUtils { /**
* 默认分隔符
*/
private static final char DEFAULT_SEPERATE_CHAR = ',';
/**
* 默认charset
*/
private static final Charset DEFAULT_CHARSET = Charset.defaultCharset(); /**
* 写数据
* @param targetFilePath
* @param fileName
* @param seperateChar
* @param charsetName
* @throws IOException
*/
public static void writeFile(String targetFilePath, String fileName, char seperateChar, String charsetName) throws IOException {
// 判断文件是否存在
File file = new File(targetFilePath);
if(!file.exists()) {
file.mkdirs();
}
// 判断是否有seperateChar
if(seperateChar == 0) {
seperateChar = DEFAULT_SEPERATE_CHAR;
}
// 判断是否有charset
Charset charset = DEFAULT_CHARSET;
if(!StringUtils.isEmpty(charsetName)) {
charset = Charset.forName(charsetName);
}
String filePath = targetFilePath + File.separatorChar + fileName;
// 获取csv文件及其数据
CsvWriter csvWriter = new CsvWriter(filePath, seperateChar, charset);
csvWriter.setForceQualifier(true); //这个决定了一般文件打开是不是有“”存在
String[] strHeader = {"userId","userName", "userAge"};
csvWriter.writeRecord(strHeader);
for(int i=0; i < 50; i++) {
String[] strArray = {i + "","张三" + i, (new Random()).nextInt(100) + ""};
csvWriter.writeRecord(strArray);
}
csvWriter.endRecord();
csvWriter.close();
} /**
* 读取csv文件中的数据
* @param originFile 要读入的文件
* @param seperateChar 分割符
* @param charsetName 编码格式
* @throws IOException
*/
public static void readFile(String originFile, char seperateChar, String charsetName) throws IOException {
// 判断文件是否存在
File file = new File(originFile);
if(!file.exists()) {
System.out.println("file is not exist...");
return;
}
// 判断是否有seperateChar
if(seperateChar == 0) {
seperateChar = DEFAULT_SEPERATE_CHAR;
}
// 判断是否有charset
Charset charset = DEFAULT_CHARSET;
if(!StringUtils.isEmpty(charsetName)) {
charset = Charset.forName(charsetName);
}
// 获取csv文件及其数据
CsvReader csvReader = new CsvReader(originFile, seperateChar, charset);
while(csvReader.readRecord()) {
//读取完毕
if(csvReader.getColumnCount() == 0) {
break;
}
long index = csvReader.getCurrentRecord(); //当前记录index
System.out.println("index: " + index);
if(index == 0) {
String[] headerArray = csvReader.getValues();
}
String userName = csvReader.get(1); //读取单条数据
String[] valArray = csvReader.getValues(); //读取数据变为数组
String recorder = csvReader.getRawRecord(); //直接读取一行数据
}
csvReader.close();
} public static void main(String[] args) throws IOException {
// 读数据
//String originFile = "C:\\Users\\zhaoq\\Desktop\\reader.csv";
//readFile(originFile, ',', "gb2312"); // 写数据
String targetFilePath = "C:\\Users\\zhaoq\\Desktop";
String fileName = "writer.csv";
writeFile(targetFilePath, fileName, ',', "gb2312");
} }
csv操作的更多相关文章
- Java CSV操作(导出和导入)
Java CSV操作(导出和导入) CSV是逗号分隔文件(Comma Separated Values)的首字母英文缩写,是一种用来存储数据的纯文本格式,通常用于电子表格或数据库软件.在 CSV文件 ...
- csv操作帮助类
功能描述: 集合转换为csv数据 DataSe转换为csv数据 using System; using System.Collections.Generic; using System.Data; u ...
- 【Java】Java CSV操作代码
CSV是逗号分隔文件(Comma Separated Values)的首字母英文缩写,是一种用来存储数据的纯文本格式,通常用于电子表格或数据库软件.在 CSV文件中,数据“栏”以逗号分隔,可允许程序通 ...
- python之pandas数据筛选和csv操作
本博主要总结DaraFrame数据筛选方法(loc,iloc,ix,at,iat),并以操作csv文件为例进行说明 1. 数据筛选 a b c (1)单条件筛选 df[df[] # 如果想筛选a列的取 ...
- pandas 写csv 操作
pandas 写csv 操作 def show_history(self): df = pd.DataFrame() df['Time'] = pd.Series(self.time_hist) df ...
- python之csv操作
在使用python爬虫时或者其他情况,都会用到csv存储与读取的相关操作,我们在这里就浅谈一下: CSV(Comma-Separated Values)逗号分隔符,也就是每条记录中的值与值之间是用分号 ...
- CSV - 操作比较
在数据报表生成的时候,我们一般会用程序去生成CSV.其中有些需要注意的地方. log_file = open('delay.%s.csv' % s_end, 'w') log_file.write(' ...
- C# csv 操作类
using System.Data; using System.IO; using System.Text; namespace YanZhiwei.DotNet2.Utilities.Common ...
- php csv操作
csv的写入数据: $data = array( array('qq号','登录时间','名称'), array('123456','2012-08-21 15:21:10'.chr(1),'我是来测 ...
随机推荐
- spring 如何决定使用jdk动态代理和cglib(转)
Spring1.2: 将事务代理工厂[TransactionProxyFactoryBean] 或 自动代理拦截器[BeanNameAutoProxyCreator] 的 proxyTargetCla ...
- HDOJ 2005 第几天?
#include<iostream> using namespace std; ] = { ,,,,,,,,,,, }; ] = { ,,,,,,,,,,, }; bool isRYear ...
- python直接下载图片到内存
1. 使用requests(推荐) from PIL import Image import requests Image.open(requests.get(url, stream=True).ra ...
- document.createRange剪贴板API
js实现复制到剪贴板 document.createRange() API 选中元素→range→selection是一一对应的,即选区必须连续,不可以有分开的多个区域.另外,被选元素必须在dom树上 ...
- linux系统安装SNMP(可用)
一般我们监控Linux都是通过SSH或Telnet方式,有时候我们不方便通过这两种方式,比如遇到监控端口因为安全原因被封禁.以及SSH需要密钥登录,这都会让监控工具很难直接远程连接.而通过SNMP的方 ...
- 如何查看yum 安装的软件路径
1.首先安装一个redis [root@iZbp1eem925ojwyx17ao9kZ ~]# yum install redis 2.查找redis的安装包 [root@iZbp1eem925ojw ...
- BCGcontrolBar(三) 添加表格(Grid)组件
表格组件和图表组件是BCG的亮点之一 如下图 BCG有众多的表格样式可供选择 下图是插入基本表格组件后的效果 首先在程序中添加 BasicGridCtrl.h BasicGridCtrl.cpp 因为 ...
- 第9章 应用层(6)_SMTP和POP3/IMAP协议
7. 电子邮件 7.1 电子邮件发送和接收过程 (1)图解电子邮件的发送 ①一个电子邮件系统应具备三个主要组成构件:A用户代理(如Outlook).B邮件服务器.C邮件发送和接收协议(分别为SMTP和 ...
- (转)驱动程序安装类(C#)
原文地址:http://www.cnblogs.com/BoyXiao/archive/2011/03/31/2001535.html 回忆刚进公司那会儿,手头的第一个工作就是完成虚拟键盘,也就是通过 ...
- pthread线程特定数据
举个栗子 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/t ...