环境依赖

<!--common csv --><!-- https://mvnrepository.com/artifact/org.apache.commons/commons-csv --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-csv</artifactId><version>1.7</version></dependency>

将数据写入到 CSV文件

// 要读读取的csv文件的 headrprivate final String[] header = new String[]{"deptno", "dname" ,"loc"};private final String FILE_NAME = "H:\\source\\gitRep\\BigdataStudy\\Kylin\\Kylin\\data\\dept.csv";// 注意 : withSkipHeaderRecord 这里要设置跳过 header, 否则会吧 header 当成第一行记录// 如果默认分隔符不是 , 则需要手动设置CSVFormat csvFormat = CSVFormat.DEFAULT.withHeader(header).withSkipHeaderRecord()// 设置分隔符.withDelimiter('\t');public void write_csv() throws IOException {// 创建输出流Appendable out = new PrintWriter("dept2.csv");//CSVFormat csvFormat = CSVFormat.newFormat('\t').withHeader(header).withSkipHeaderRecord();// 注意 使用 DEFAULT 创建的CSVFormat对象生成记录可以自动换行,// 如果使用上面的 newFormat 的csvformat 不会自动换行CSVPrinter csvPrinter = CSVFormat.DEFAULT.print(out);/* CSVPrinter csvPrinter = new CSVPrinter(out, csvFormat);*/// 创建 一些记录信息List<String> records = new ArrayList<>();// 部门编号,records.add("RSA001_20190121" + "\t" + "产品部" + "\t" + "RSA001");records.add("RSA002_20180623" + "\t" + "设计部" + "\t" + "RSA002");records.add("RSA003_20150422" + "\t" + "技术部" + "\t" + "RSA003");records.add("RSA004_20160903" + "\t" + "运营部" + "\t" + "RSA004");records.add("RSA005_20120608" + "\t" + "财务部" + "\t" + "RSA005");// 将数据写入到 文件中for (String record : records) {csvPrinter.printRecord(record);}// 刷写缓冲区csvPrinter.flush();csvPrinter.close();}

从CSV文件中读取数据

// 要读读取的csv文件的 headrprivate final String[] header = new String[]{"deptno", "dname", "loc"};private final String FILE_NAME = "H:\\source\\gitRep\\BigdataStudy\\Kylin\\Kylin\\data\\dept.csv";// 注意 : withSkipHeaderRecord 这里要设置跳过 header, 否则会吧 header 当成第一行记录// 如果默认分隔符不是 , 则需要手动设置CSVFormat csvFormat = CSVFormat.DEFAULT.withHeader(header).withSkipHeaderRecord()// 设置分隔符.withDelimiter('\t');public void read_csv() throws IOException {// 将文件转换为 Reader 流Reader in = new FileReader(FILE_NAME);// 解析数据CSVParser parser = csvFormat.parse(in);// 获取记录List<CSVRecord> records = parser.getRecords();// 打印记录for (CSVRecord record : records) {// 获取指定字段的数据String deptno = record.get("deptno");String dname = record.get("dname");String loc = record.get("loc");System.out.println(deptno + "\t" + dname + "\t" + loc);System.out.println(record);}// 关闭流parser.close();in.close();}

参考

  1. Apache Commons CSV User Guide

Java学习笔记 - Apache Common CSV 的使用总结相关推荐

  1. java学习笔记16--I/O流和文件

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理 ...

  2. java学习笔记14--多线程编程基础1

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...

  3. Java学习笔记之log4j与commons-logging转

    Java学习笔记之log4j与commons-logging<转> (2011-02-16 11:10:46) 转载▼ 标签: 杂谈 分类: 技术学习之其他 Logger来自log4j自己 ...

  4. java学习笔记2(datawhale教程):运算符和表达式、流程控制、数组

    java学习笔记2(datawhale教程):运算符和表达式.流程控制.数组 文章目录 java学习笔记2(datawhale教程):运算符和表达式.流程控制.数组 一.运算符和表达式 1.数学函数与 ...

  5. Java学习笔记Day02

    Java学习笔记Day02 一.细化Hello程序 1.详解代码 //公有的类,叫做Hello public class Hello{//主方法public static void main(Stri ...

  6. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  7. Java 学习笔记 - 数组类型互转

    Java 学习笔记 - 数组类型互转 数组类型转换 字符串数组 to (Integer.Long.Double)列表 传统方式 Java8 Stream方式 数组 to 数组 字符串数组 to (in ...

  8. java学习笔记11--Annotation

    java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. j ...

  9. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  10. 准备写java学习笔记

    准备写java学习笔记 java int 转载于:https://blog.51cto.com/cryingcloud/1975267

最新文章

  1. windows 如何安装oracle 补丁包,Windows Server 2003 上安装 Oracle10g(10.2.0.1)并升级 至补丁(10.2.0.4) 图解...
  2. [moka同学笔记]PHP操作Redis收集
  3. SAP最佳业务实践:重复制造(149)-4发料
  4. matlab 边界连续,matlab的边界问题
  5. 康力电梯开门不关门 服务器显示开门键动作,康力电梯门机故障代码
  6. 一个基础的 HTML 文档有哪些标签?(3)
  7. ueditor单图上传iframe跨域_UEditor单图上传(simpleupload)跨域问题解决方案
  8. [转载]Magento 店铺多语言设置
  9. error CS1617: Invalid option 'latest' for /langversion; must be ISO-1, ISO-2, Default or an...
  10. 使用switchhost进行host文件管理
  11. Linux之交叉编译器的构建
  12. Android之利用NanoHttpd搭建服务器
  13. tk域名管理后台_Freenom免费域名.TK、.CF、.ML、.GA注册及使用方法
  14. 3dmax:3dmax三维VR渲染设置之摄像机设置(修改摄像机、创建摄像机及其基本参数{视野、正交投影、镜头、环境范围、剪切平面、多过程效果、运动模糊、景深参数、运动模糊参}解释等)图文教程之详细攻略
  15. Excel数据分析从入门到精通(九)28个图表之KPI分析
  16. 程序员真的需要读研究生么?
  17. Html5 文件上传
  18. java计算器制作教学视频_java实例——简单计算器的制做
  19. 【WSN通信】基于最佳簇半径的无线传感器网络分簇路由算法附matlab代码
  20. c语言表达式 amp amp,amp;amp;在C语言中是什么意思

热门文章

  1. 什么是数据库的存储过程?
  2. c语言求开平方标准库函数,c语言如何求平方根 C语言中开平方函数是什么?
  3. 使用 Tampermonkey 编写高级跨网站自动化任务脚本
  4. 安装bzz1.0教程
  5. 为国内软件质量呐喊:《2021年国内质量调查报告》发布
  6. PS教程新手入门(三)--PS实用的技巧教程
  7. JAVA GUI同一个窗体切换面板JPanel以及获取JFrame方法的注意事项
  8. [Python]ImportError: This platform lacks a functioning sem_open implementation, therefore, the requi
  9. 云控微信开发SDK使用教程--手机微信群聊信息变更通知服务端
  10. DC/DC浪涌电流简记