需要引入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操作的更多相关文章

  1. Java CSV操作(导出和导入)

    Java CSV操作(导出和导入)  CSV是逗号分隔文件(Comma Separated Values)的首字母英文缩写,是一种用来存储数据的纯文本格式,通常用于电子表格或数据库软件.在 CSV文件 ...

  2. csv操作帮助类

    功能描述: 集合转换为csv数据 DataSe转换为csv数据 using System; using System.Collections.Generic; using System.Data; u ...

  3. 【Java】Java CSV操作代码

    CSV是逗号分隔文件(Comma Separated Values)的首字母英文缩写,是一种用来存储数据的纯文本格式,通常用于电子表格或数据库软件.在 CSV文件中,数据“栏”以逗号分隔,可允许程序通 ...

  4. python之pandas数据筛选和csv操作

    本博主要总结DaraFrame数据筛选方法(loc,iloc,ix,at,iat),并以操作csv文件为例进行说明 1. 数据筛选 a b c (1)单条件筛选 df[df[] # 如果想筛选a列的取 ...

  5. pandas 写csv 操作

    pandas 写csv 操作 def show_history(self): df = pd.DataFrame() df['Time'] = pd.Series(self.time_hist) df ...

  6. python之csv操作

    在使用python爬虫时或者其他情况,都会用到csv存储与读取的相关操作,我们在这里就浅谈一下: CSV(Comma-Separated Values)逗号分隔符,也就是每条记录中的值与值之间是用分号 ...

  7. CSV - 操作比较

    在数据报表生成的时候,我们一般会用程序去生成CSV.其中有些需要注意的地方. log_file = open('delay.%s.csv' % s_end, 'w') log_file.write(' ...

  8. C# csv 操作类

    using System.Data; using System.IO; using System.Text; namespace YanZhiwei.DotNet2.Utilities.Common ...

  9. php csv操作

    csv的写入数据: $data = array( array('qq号','登录时间','名称'), array('123456','2012-08-21 15:21:10'.chr(1),'我是来测 ...

随机推荐

  1. NPF or NPCAP service is not installed

    "NPF or NPCAP service is not installed" "could not start local server process:GNS3&qu ...

  2. [UE4]国际化,中英文切换

    只有“Text”数据类型才支持国际化 必须以独立游戏窗口运行,语音切换才会起作用.

  3. failed to launch: nice -n 0 /home/hadoop/spark-2.3.3-bin-hadoop2.7/bin/spark-class org.apache.spark.deploy.worker.Worker --webui-port 8081 spark://namenode1:7077

    spark2.3.3安装完成之后启动报错: [hadoop@namenode1 sbin]$ ./start-all.shstarting org.apache.spark.deploy.master ...

  4. vue 父组件主动获取子组件的数据和方法 子组件主动获取父组件的数据和方法

    Header.vue <template> <div> <h2>我是头部组件</h2> <button @click="getParen ...

  5. 第11课 std::bind和std::function(2)_std::bind绑定器

    1. 温故知新:std::bind1st和std::bind2nd (1)bind1st.bind2nd首先它们都是函数模板,用于将参数绑定到可调用对象(如函数.仿函数等)的第1个或第2个参数上. ( ...

  6. Linux下Mysql自启动

    如果你都是按照默认配置安装的那么只要按照如下步骤就可以了 1.cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql   将服 ...

  7. Structrued Streaming业务数据实时分析

    先启动spark-shell,记得启动nc服务 输入以下代码 scala> import org.apache.spark.sql.functions._ import org.apache.s ...

  8. 搭建(WSTMart)php电商环境时缺少fileinfo函数

    搭建WSTMart环境步骤: 第一步:安装phpstudy,一键安装即可 第二步:把下好的系统源码,放到一个文件夹中,并放到刚刚安装好的phpstudy下WWW文件夹下,如WWW>WSTMart ...

  9. Solr合并索引方式

    索引合并并不会判断uniqueKey,所以主键有重复不会判断主键会重复. 官方的解释是不要有重复. 要合并索引,它们必须满足以下要求: 这两个索引必须兼容:它们的架构应该包含相同的字段,并且它们应该以 ...

  10. python 之 json 与pickle 模块

    序例化:将对象转换为可通过网络传输或可以存储到本地磁盘的数据格式(如:XML.JSON或特定格式的字节串)的过程称为序列化:反之,则称为反序列化. 1.[JSON] import json dic={ ...