CSV文件的读写
转:
CSV文件的读写
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深层次的理解,我会随时更新此文章,希望会对大家有一点点用。