现在的位置: 首页 > 综合 > 正文

CSV文件的读写

2017年11月30日 ⁄ 综合 ⁄ 共 2003字 ⁄ 字号 评论关闭

   CSV是什么,以及有什么用?

   (百度一下你知道的会更多)我简单的总结就是 CSV文件(comma seperated value)即逗号分隔符,用记事本打开的话会是"a","b","c"这种格式,当然也可以改。

  用处在于可以轻松的导入表格和数据库中,一行代表一条数据,功能很吸引人吧,这样就可以批量的导入导出数据库中的值,虽然你也可以用数据库默认的导入导出表,但通过csv文件你可以方便选择过滤导出。比如你写个筛选条件把筛选后的值一条一条地放入csv文件,或者把某csv文件里的值批量导入某表,是不是很方便呢?

  要读写CSV文件需要CSVWriter 和CSVReader ,当然你要导入相应的包才行。

用maven管理项目的话只需在你的pom文件里加入:

<dependency>
   <groupId>net.sf.opencsv</groupId>
   <artifactId>opencsv</artifactId>
   <version>2.3</version>
  </dependency>

即需要opencsv的包,如果没用maven,那么你就只能手动下载再导入项目,感觉还是maven方便,需要啥包,直接加句配置,maven自动帮你下载包和源码,方便你查看学习源码。

下面就是用csvWriter来生成文件

package com.test;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import au.com.bytecode.opencsv.CSVWriter;

public class Test {

 /**
  * @param args
  */

 public static void main(String[] args) throws IOException {
  CSVWriter writer = new CSVWriter(new FileWriter(new File("./1.csv")),',');
  List<String[]> alList=new ArrayList<String[]>();
  List<String> list=new ArrayList<String>();
  list.add("aa");
  list.add("bb");
  list.add("cc");
  alList.add(list.toArray(new String[list.size()]));
    
  list=new ArrayList<String>();
  list.add("dd");
  list.add("ee");
  list.add("ff");
  alList.add(list.toArray(new String[list.size()]));
  
  writer.writeAll(alList);
  writer.close();
  System.out.println(writer.toString());

 }
}

打开生成的1.csv文件 发现是

"aa","bb","cc"

"dd","ee","ff"

上面代码稍微介绍下,CSVWriter writer = new CSVWriter(new FileWriter(new File("./1.csv")),',');先声明一个csv文件为1.csv,并且分隔符为‘,’当然你可以换成其他的符号,默认也是逗号。和一般的写入流一样,writeAll之后需要flush()或者close(),close是时候默认会先flush的,如果不显示的调用flush或close,这些值是一直存在于缓存中不会写入文件的。

CSVWriter有两个writeAll方法用来写入文件(流)

public void writeAll(java.sql.ResultSet rs,
boolean includeColumnNames)
public void writeAll(List<String[]> allLines)

看第一种,竟然可以把resultSet放进去,另外就是上面例子中的写List<String>,这时需要把你查询到的值放入list的数组。

另外就是CSVReader了,只上例子了

public static void main(String[] args) throws IOException {
  
  CsvReader reader = new CsvReader("./1.csv ");
  
  while (reader.readRecord()) {
   
   String str = reader.getRawRecord();
   System.out.println(str);
   
  }
  reader.close();
 }
}

和一般的读文件区别不大,相信大家看也能理解,如果后面有对CSVWriter深层次的理解,我会随时更新此文章,希望会对大家有一点点用。

 

【上篇】
【下篇】

抱歉!评论已关闭.