java读取csv文件的多种方式
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文件的多种方式相关推荐
- Java 读取TXT文件的多种方式-行读取,字节读取
Java 读取TXT文件的多种方式 1).按行读取TXT文件 package zc; import java.io.BufferedReader; import java.io.File; impor ...
- java— 读取JSON文件的多种方式
大部分内容参考自: https://blog.csdn.net/csdn_halon/article/details/120287992 在开发过程中有时会遇到需要读取本地.json文件的需求,通常会 ...
- java读取csv文件的两种方式
java读取csv文件的两种方式 1.CsvReader读取 import com.csvreader.CsvReader; /*** CsvReader 读取* @param filePath* @ ...
- java读取csv文件_使用扫描仪读取Java中的CSV文件
java读取csv文件 We can use Java Scanner Class to read CSV File in java. 我们可以使用Java扫描程序类在Java中读取CSV文件. 读取 ...
- java读取csv文件
2019独角兽企业重金招聘Python工程师标准>>> CSV其实就是COMMA SEPARATED VALUE的缩写. 在开发中用Java操作csv文件有专门的的API叫javac ...
- java 读取csv文件乱码_java读取csv文件乱码怎么解决
csv文件默认编码为ANSI,java读取CSV出现乱码主要是编码不一致问题.(推荐:java视频教程)DataInputStream in = new DataInputStream(new Fil ...
- java读取csv文件的行数_JMeter 读取 CSV 文件数据行数
在用 JMeter 做测试时,经常需要调用外部 CSV 文件的数据到脚本中使用,如果我们想对 CSV 文件中数据的行数进行统计,这个怎么做呢? 针对上面表格的数据,我们一起来学习一下如何统计数据行数吧 ...
- 读csv文件java_用Java读取CSV文件的最快方法
我注意到在读取大文件(在我的例子中是csv文件)时使用java.util.Scanner非常慢. 我想改变当前读取文件的方式,以提高性能.下面是我目前所拥有的.请注意,我正在为Android开发:In ...
- java读取csv文件行数_java读取巨大csv的行数
我有超过700K行的巨大csv行数.我必须解析那些csv的行和do ops.我想通过使用线程来做到这一点.我第一次尝试做的很简单.每个线程都应该有唯一的csv行.我只有有限的行数只能读到3000.我创 ...
最新文章
- mysql超详细教程_MySQL8.0.23安装超详细教程
- 服务器 kvm 进入系统,服务器CAT5 KVM切换器系统
- 顶级程序员的10条最佳实践
- 程序一直吐司提示获取缓存记录失败以及吐司显示set Alias success
- java如何抽象一辆车,java新职篇:面向对象之抽象
- php with语法,Yii框架关联查询with用法分析
- linux如何安装django
- oracle 创建用户且只有查看权限
- 爬虫实现股票分析(三)
- Julia: 用PyPlot画Arrow以及策略信号的表达
- 原生js实现图片验证码
- 详解电脑机械硬盘装什么系统好
- Android动画之Interpolator插入器
- Linux下Firefox安装flash操作
- OKR工作法学习心得
- 记录一次自己搭建服务器的历程(机架式服务器,Linux系统)
- 解决台式机前耳机插孔没有声音
- 毕业论文完成,感谢帮助过我的人
- 彻底解决The last packet successfully received from the server was * milliseconds ago问题
- VScode+Latex (Recipe terminated with fatal error: spawn xelatex ENOENT)和latex简单使用介绍