CSV文件的读写

转:

CSV文件的读写

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/beyond667/article/details/8991525

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

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

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

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

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

  1. <dependency>
  2. <groupId>net.sf.opencsv</groupId>
  3. <artifactId>opencsv</artifactId>
  4. <version>2.3</version>
  5. </dependency>

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

下面就是用csvWriter来生成文件

  1. package com.test;
  2.  
  3. import java.io.File;
  4. import java.io.FileWriter;
  5. import java.io.IOException;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8.  
  9. import au.com.bytecode.opencsv.CSVWriter;
  10.  
  11. public class Test {
  12.  
  13. /**
  14. * @param args
  15. */
  16.  
  17. public static void main(String[] args) throws IOException {
  18. CSVWriter writer = new CSVWriter(new FileWriter(new File("./1.csv")),',');
  19. List<String[]> alList= new ArrayList<String[]>();
  20. List<String> list=new ArrayList<String>();
  21. list.add("aa");
  22. list.add("bb");
  23. list.add("cc");
  24. alList.add( list.toArray(new String[list.size()]));
  25.  
  26. list=new ArrayList<String>();
  27. list.add("dd");
  28. list.add("ee");
  29. list.add("ff");
  30. alList.add( list.toArray(new String[list.size()]));
  31.  
  32. writer.writeAll(alList);
  33. writer.close();
  34. System.out.println(writer.toString());
  35.  
  36. }
  37. }

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

  1. "aa","bb","cc"
  2.  
  3. "dd","ee","ff"
  4.  

上面代码稍微介绍下,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了,只上例子了

  1. public static void main(String[] args) throws IOException {
  2.  
  3. CsvReader reader = new CsvReader("./1.csv ");
  4.  
  5. while (reader.readRecord()) {
  6.  
  7. String str = reader.getRawRecord();
  8. System.out.println(str);
  9.  
  10. }
  11. reader.close();
  12. }
  13. }


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

猜你喜欢

转载自www.cnblogs.com/libin6505/p/11654206.html