java 对CSV 文件的读取与生成
2024-10-19 11:41:00
CSV文件是以逗号分隔值的文件格式,一般用WORDPAD或记事本(NOTE),EXCEL打开。CSV(逗号分隔值)是一种用来存储数据的纯文本文件,通常都是用于存放电子表格或数据的一种文件格式,对于CSV文件的读取与生成其实很简单,只要读取的时候用(,)进行切割就可以获得相应的列元素,在生成的时候不同的列元素之间加上(,)
demo如下:
//读取CSV文件
public void readCsvFile(String fileName) throws IOException {
BufferedReader bufferedReader=null;
try{
bufferedReader=new BufferedReader(new FileReader(fileName));
String line=null;
while(null!=(line=bufferedReader.readLine())){
String[] lines = line.split(",");
logger.info("这就是文件的内容"+ Arrays.toString(lines));
}
}catch (IOException e){
throw new IOException(e);
}finally {
if(bufferedReader!=null){
try {
bufferedReader.close();
} catch (IOException e) {
logger.error("输入流关流出现异常",e);
}
}
}
}
//生产CSV文件
public static void writerCsvFile(String fileName, List<String[]> list) throws IOException {
BufferedWriter bufferedWriter=null;
try{
bufferedWriter= new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName),"GBK"));
for (String[] s:list) {
for (int i=0;i<s.length;i++){
bufferedWriter.write(s[i]);
bufferedWriter.write(",");
}
bufferedWriter.newLine();//记得换行
}
}catch (IOException e){
throw new IOException(e);
}finally {
if(bufferedWriter!=null){
try {
bufferedWriter.close();
} catch (IOException e2) {
logger.error("输出流关流出现异常",e2);
}
}
}
}
值得注意的是:在进行生成CSV文件的时候,对于长的数字组成的字符串的写入,CSV会自动进行数字化转换,即科学计数法,对于要不要处理,还是根据需求来定
如果是想直观的双击打开就不要进行转换的话,就要在写入的时候,告诉CSV,我不是写的数字,可以进行再写的时候拼接\t,;等信息
如果生成的CSV文件,也是使用的输入流进行读取的话,不用做处理,会自动进行识别,因为这个是CSV文件的格式
最新文章
- Linux下用ftp更新web内容!
- oracle 开窗分析函数和树形结构
- 第一周 总结笔记 / 斯坦福-Machine Learning-Andrew Ng
- paip.mysql 性能跟iops的以及硬盘缓存的关系
- mvc 修改 删除 linq
- Android Socket通信
- 面试之BI-SQL--table转换[2]
- [RQNOJ313]波浪数
- 499 - What&#39;s The Frequency, Kenneth?
- Unity CommandInvokationFailure: Failed to re-package resources. 解决方案
- JDK和Tomcat部署
- C#常用单元测试框架比较:XUnit, NUnit, 和 Visual Studio(MSTest)
- C#语言支持的特性,.NET却不支持,那么C#不被.NET支持的部分又是如何在.NET上运行的呢?
- 2018/12/20 20:52:42 螺纹钢PTA豆粕
- icomet研究
- STL——heap结构及算法
- 用java编写一个函数,用于计算桌子的面积,可计算任意边长的桌子
- map函数和reduce函数、filter函数的区别
- Math 类的使用(一小部分)
- Linux input子系统学习总结(一)---- 三个重要的结构体
热门文章
- MySQL(安装,服务,创建用户及授权)
- webstrom 一直反复indexing
- javascript浅拷贝深拷贝理解记录
- 解决Windows 8.1 应用商店中安装程序挂起的解决
- 基于jeesite+android开发 电子商务系统免费教程
- jvm(2)类的初始化(二)和实例化
- jQuery过滤选择器:first和:first-child的区别,CSS伪类:first-child
- h5聊天室web端(仿微博、微信)|h5仿微信网页端|仿微信界面弹窗
- 做了三年的菜鸟web前端的感悟
- zabbix 自定义 key (转)