csv文件的介绍

以下是来自百度百科的介绍

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。建议使用WORDPAD或是记事本来开启,再则先另存新档后用EXCEL开启,也是方法之一。

csv文件的读取方式

1、java原生方式

当读取的是一个简单的csv文件,即文件的列字段中不包含分隔符时,可以使用BufferedReader或者Scanner类去读取

BufferedReader方式

// 创建 reader
try (BufferedReader br = Files.newBufferedReader(Paths.get("users.csv"))) {// CSV文件的分隔符String DELIMITER = ",";// 按行读取String line;while ((line = br.readLine()) != null) {// 分割String[] columns = line.split(DELIMITER);// 打印行System.out.println("User["+ String.join(", ", columns) +"]");}
} catch (IOException ex) {ex.printStackTrace();
}

输出

User[1, John Doe, john@example.com, AE]
User[2, Alex Jones, alex@example.com, DE]
User[3, Jovan Lee, jovan@example.com, FR]
User[4, Greg Hover, greg@example.com, US]

Scanner方式

// 创建scanner
try (Scanner scanner = new Scanner(Paths.get("users.csv").toFile())) {// CSV文件分隔符String DELIMITER = ",";// 设置分隔符scanner.useDelimiter(DELIMITER);// 读取while (scanner.hasNext()) {System.out.print(scanner.next() + " ");}
} catch (IOException ex) {ex.printStackTrace();
}

输出

1 John Doe john@example.com AE
2 Alex Jones alex@example.com DE
3 Jovan Lee jovan@example.com FR
4 Greg Hover greg@example.com US

2、第三方库

第三方库提供更加丰富且成熟的功能,可以更加方便的读和写,版本号可以使用最新版

OpenCSV

pom中引入以下jar

<dependency><groupId>com.opencsv</groupId><artifactId>opencsv</artifactId><version>5.0</version>
</dependency>

读文件:

try (Reader reader = Files.newBufferedReader(Paths.get("users.csv"));CSVReader csvReader = new CSVReader(reader)) {String[] record;while ((record = csvReader.readNext()) != null) {System.out.println("User["+ String.join(", ", record) +"]");}
} catch (IOException | CsvValidationException ex) {ex.printStackTrace();
}

Apache Commons CSV

pom中引入以下jar

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-csv</artifactId><version>1.7</version>
</dependency>

读文件:

try (Reader reader = Files.newBufferedReader(Paths.get("users.csv"))) {Iterable<CSVRecord> records = CSVFormat.DEFAULT.parse(reader);for (CSVRecord record : records) {System.out.println("Record #: " + record.getRecordNumber());System.out.println("ID: " + record.get(0));System.out.println("Name: " + record.get(1));System.out.println("Email: " + record.get(2));System.out.println("Country: " + record.get(3));}
} catch (IOException ex) {ex.printStackTrace();
}

javacsv

个人使用的是这种方法,可以查看API手册,其实也不用单独查看,在使用中学习即可,pom中引入以下jar

<dependency><groupId>net.sourceforge.javacsv</groupId><artifactId>javacsv</artifactId><version>2.0</version>
</dependency>

读文件:

public static void read() throws IOException {// 第一参数:读取文件的路径 第二个参数:分隔符(不懂仔细查看引用百度百科的那段话) 第三个参数:字符集CsvReader csvReader = new CsvReader("F:/demo.csv", ',', Charset.forName("UTF-8"));// 如果你的文件没有表头,这行不用执行// 这行不要是为了从表头的下一行读,也就是过滤表头csvReader.readHeaders();// 读取每行的内容while (csvReader.readRecord()) {// 获取内容的两种方式// 1. 通过下标获取System.out.print(csvReader.get(0));// 2. 通过表头的文字获取System.out.println(" " + csvReader.get("年龄"));}}

写文件:

public static void writer() throws IOException {// 第一参数:新生成文件的路径 第二个参数:分隔符(不懂仔细查看引用百度百科的那段话) 第三个参数:字符集CsvWriter csvWriter = new CsvWriter("F:/demo.csv", ',', Charset.forName("UTF-8"));// 表头和内容String[]  headers = {"姓名", "年龄", "性别"};String[] content = {"张三", "18", "男"};// 写表头和内容,因为csv文件中区分没有那么明确,所以都使用同一函数,写成功就行csvWriter.writeRecord(headers);csvWriter.writeRecord(content);// 关闭csvWritercsvWriter.close();}

参考链接

  • https://attacomsian.com/blog/java-read-parse-csv-file
  • https://my.oschina.net/u/2930289/blog/1589704

java读取csv文件的多种方式相关推荐

  1. Java 读取TXT文件的多种方式-行读取,字节读取

    Java 读取TXT文件的多种方式 1).按行读取TXT文件 package zc; import java.io.BufferedReader; import java.io.File; impor ...

  2. java— 读取JSON文件的多种方式

    大部分内容参考自: https://blog.csdn.net/csdn_halon/article/details/120287992 在开发过程中有时会遇到需要读取本地.json文件的需求,通常会 ...

  3. java读取csv文件的两种方式

    java读取csv文件的两种方式 1.CsvReader读取 import com.csvreader.CsvReader; /*** CsvReader 读取* @param filePath* @ ...

  4. java读取csv文件_使用扫描仪读取Java中的CSV文件

    java读取csv文件 We can use Java Scanner Class to read CSV File in java. 我们可以使用Java扫描程序类在Java中读取CSV文件. 读取 ...

  5. java读取csv文件

    2019独角兽企业重金招聘Python工程师标准>>> CSV其实就是COMMA SEPARATED VALUE的缩写. 在开发中用Java操作csv文件有专门的的API叫javac ...

  6. java 读取csv文件乱码_java读取csv文件乱码怎么解决

    csv文件默认编码为ANSI,java读取CSV出现乱码主要是编码不一致问题.(推荐:java视频教程)DataInputStream in = new DataInputStream(new Fil ...

  7. java读取csv文件的行数_JMeter 读取 CSV 文件数据行数

    在用 JMeter 做测试时,经常需要调用外部 CSV 文件的数据到脚本中使用,如果我们想对 CSV 文件中数据的行数进行统计,这个怎么做呢? 针对上面表格的数据,我们一起来学习一下如何统计数据行数吧 ...

  8. 读csv文件java_用Java读取CSV文件的最快方法

    我注意到在读取大文件(在我的例子中是csv文件)时使用java.util.Scanner非常慢. 我想改变当前读取文件的方式,以提高性能.下面是我目前所拥有的.请注意,我正在为Android开发:In ...

  9. java读取csv文件行数_java读取巨大csv的行数

    我有超过700K行的巨大csv行数.我必须解析那些csv的行和do ops.我想通过使用线程来做到这一点.我第一次尝试做的很简单.每个线程都应该有唯一的csv行.我只有有限的行数只能读到3000.我创 ...

最新文章

  1. mysql超详细教程_MySQL8.0.23安装超详细教程
  2. 服务器 kvm 进入系统,服务器CAT5 KVM切换器系统
  3. 顶级程序员的10条最佳实践
  4. 程序一直吐司提示获取缓存记录失败以及吐司显示set Alias success
  5. java如何抽象一辆车,java新职篇:面向对象之抽象
  6. php with语法,Yii框架关联查询with用法分析
  7. linux如何安装django
  8. oracle 创建用户且只有查看权限
  9. 爬虫实现股票分析(三)
  10. Julia: 用PyPlot画Arrow以及策略信号的表达
  11. 原生js实现图片验证码
  12. 详解电脑机械硬盘装什么系统好
  13. Android动画之Interpolator插入器
  14. Linux下Firefox安装flash操作
  15. OKR工作法学习心得
  16. 记录一次自己搭建服务器的历程(机架式服务器,Linux系统)
  17. 解决台式机前耳机插孔没有声音
  18. 毕业论文完成,感谢帮助过我的人
  19. 彻底解决The last packet successfully received from the server was * milliseconds ago问题
  20. VScode+Latex (Recipe terminated with fatal error: spawn xelatex ENOENT)和latex简单使用介绍

热门文章

  1. 2. 感知机 Perceptron
  2. STM32F103学习笔记(5.0)——定时器TIM
  3. CAD2014三维旋转 rotate3D
  4. 共有 n 个非凡拔尖的人才参加竞选,现在票数已经统计完毕,得票最多的人当选。请你算出谁能够当上学生会主席。
  5. 使用canvas 绘制斐波那契螺旋线(斐波那契数列的应用)
  6. python高级视频教程免费下载
  7. MathType重装之后遇到错误,可能的解决方法
  8. 六大工业级开源监控软件介绍
  9. Python保留字与标识符
  10. Applese 的减肥计划