Java:读写CSV格式文件(opencsv)

原创 2016年10月12日 21:48:44

使用opencsv(opencsv-2.3.jar),下载地址:http://sourceforge.net/projects/opencsv/files/latest/download

一,读取CSV格式文件

[java] view plain copy
  1. import java.io.File;  
  2. import java.io.FileReader;  
  3. import java.util.List;  
  4.   
  5. import au.com.bytecode.opencsv.CSVReader;  
  6.   
  7. public class ReadCSV {  
  8.     public static void main(String[] args) throws Exception {  
  9.         File file = new File("e:\\read.csv");  
  10.         FileReader fReader = new FileReader(file);  
  11.         CSVReader csvReader = new CSVReader(fReader);  
  12.         String[] strs = csvReader.readNext();  
  13.         if(strs != null && strs.length > 0){  
  14.             for(String str : strs)  
  15.                 if(null != str && !str.equals(""))  
  16.                     System.out.print(str + " , ");  
  17.             System.out.println("\n---------------");  
  18.         }  
  19.         List<String[]> list = csvReader.readAll();  
  20.         for(String[] ss : list){  
  21.             for(String s : ss)  
  22.                 if(null != s && !s.equals(""))  
  23.                     System.out.print(s + " , ");  
  24.             System.out.println();  
  25.         }  
  26.         csvReader.close();  
  27.     }  
  28. }  

执行结果如下:

[plain] view plain copy
  1. 编号 , 姓名 , 备注 ,   
  2. ---------------  
  3. 1 , Li , 123456 ,   
  4. 2 , Sean ,   

CSVReader.close()方法本质上是关闭传入其中的FileReader:

[java] view plain copy
  1. private BufferedReader br;  
  2.       
  3. public CSVReader(Reader reader, char separator, char quotechar,   
  4.         char escape, int line, boolean strictQuotes, boolean ignoreLeadingWhiteSpace) {  
  5.     this.br = new BufferedReader(reader);  
  6.     this.parser = new CSVParser(separator, quotechar, escape,   
  7.             strictQuotes, ignoreLeadingWhiteSpace);  
  8.     this.skipLines = line;  
  9. }  
  10.   
  11. public void close() throws IOException{  
  12.     br.close();  
  13. }  

当然分隔符可以不是默认的逗号,只需在创建CSVReader时指定其分隔符即可

[java] view plain copy
  1. CSVReader csvReader = new CSVReader(fReader, ';');  

二,写CSV格式文件

[java] view plain copy
  1. import java.io.File;  
  2. import java.io.FileWriter;  
  3. import java.io.Writer;  
  4.   
  5. import au.com.bytecode.opencsv.CSVWriter;  
  6.   
  7. public class WriteCSV {  
  8.     public static void main(String[] args) throws Exception {  
  9.         File file = new File("e:\\write.csv");  
  10.         Writer writer = new FileWriter(file);  
  11.         CSVWriter csvWriter = new CSVWriter(writer, ',');  
  12.         String[] strs = {"abc" , "abc" , "abc"};  
  13.         csvWriter.writeNext(strs);  
  14.         csvWriter.close();  
  15.     }  
  16. }  

执行结果如下:

CSVWrite的构造方法如下:

[java] view plain copy
  1. public static final char DEFAULT_QUOTE_CHARACTER = '"';  
  2.    
  3. public CSVWriter(Writer writer, char separator) {  
  4.     this(writer, separator, DEFAULT_QUOTE_CHARACTER);  
  5. }  

双引号被用作默认的引用符(具体什么意思不清楚)

修改一下CSVReader的初始化方式:

[java] view plain copy
  1. CSVWriter csvWriter = new CSVWriter(writer, ',' , '\\');  

CSVReader中使用的是CSVParser中的静态变量:

[java] view plain copy
  1. public static final char DEFAULT_QUOTE_CHARACTER = '"';  
  2.   
  3. public static final char DEFAULT_ESCAPE_CHARACTER = '\\';  

但是在CSVWriter中:

[java] view plain copy
  1. public static final char DEFAULT_QUOTE_CHARACTER = '"';  
  2.      
  3. public static final char DEFAULT_ESCAPE_CHARACTER = '"';  

看来应该是作者的疏忽


PS:当CSV的记录有空格时,这个工具并不能够识别,推荐我的另外一篇文章javacsv

版权声明:看完觉得好的。请留个脚印,证明你来过

Java读写CSV格式文件(opencsv)

使用,下载地址: 一,读取CSV
  • a19881029
  • a19881029
  • 2014年07月20日 17:55
  • 51684

opencsv方式读取csv文件,详解,示例

1.opencsv官网:http://opencsv.sourceforge.net/    jar包:opencsv-2.3.jar    下载地址:http://sourceforge.net/p...
  • han_huayi
  • han_huayi
  • 2017年02月17日 13:25
  • 2419

Java+Selenium3方法篇44-利用opencsv读取csv文件

前面介绍了如何读取excel文件,本篇介绍如何读取vsc文件,什么是csv,它的定义是与逗号分隔的值(Comma-Separated Values),同样的Java中需要用到第三方lib去处理读取cs...
  • u011541946
  • u011541946
  • 2017年07月09日 23:27
  • 1077

openCsv通用导出

通用openCsv工具类
  • paincupid
  • paincupid
  • 2016年08月28日 21:53
  • 1164

Java opencsv 生成、读取、下载、删除CSV文件

1. 利用opencsv包中的CSVWriter类,生成csv文件 import java.io.File; import java.io.FileOutputStream; import ja...
  • cat_book_milk
  • cat_book_milk
  • 2016年10月28日 10:08
  • 2629

openCSV读写CSV文件

使用openCSV读写CSV文件的方法和例子,需注意UTF-8的BOM标识。可自动映射csv文件与javabean,方便读写操作。...
  • peterwanghao
  • peterwanghao
  • 2017年07月19日 16:44
  • 1133

Spark学习1

1, 知识点: [1], Spark中addFile:如果有需求把数据分发到各个计算结点的时候;一种方法是通过HDFS,之后再由Spark去访问HDFS中的文件;但是如果文件较小(e.g. ...
  • xstarcto
  • xstarcto
  • 2017年06月19日 20:41
  • 160

Java:读写CSV格式文件(opencsv)

使用opencsv(opencsv-2.3.jar),下载地址:http://sourceforge.net/projects/opencsv/files/latest/download 一,读取CS...
  • qq592304796
  • qq592304796
  • 2016年10月12日 21:48
  • 457

Java Read CSV File In Java With OpenCSV library 以及中文件乱码解决, Mapping CSV with Java beans

sample.csv文件: COUNTRY,CAPITAL,POPULATION India,New Delhi, 1.21B People's republic of China,Beijing,...
  • xiaowanggedege
  • xiaowanggedege
  • 2013年12月31日 11:56
  • 4758

用opencsv和用Bufferedreader/writer进行csv文件的读写及简单处理

最近要大量处理一批.csv文件,由于收集到的数据大部分是9列,但是有的行的列数大于9,因此想写个程序去批处理这些.csv文件,使得处理好的文件可以是规则的,方便导入数据库。 方法一: 首先我想到了...
  • YQlakers
  • YQlakers
  • 2017年04月21日 17:31
  • 740
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java:读写CSV格式文件(opencsv)
举报原因:
原因补充:

(最多只允许输入30个字)