CSV的导入导出经常用在数据库方面,比如在项目运作中,第三方的提供部分数据但是又不肯开放接口给调用者,他们只提供数
据库片段数据然后以CSV的格式提供给使用者,所以这个时候就是用到CSV导入导出的功能了,再提一下CSV的导入和导出功能
和TXT的导入导出功能非常相似,下一篇将介绍TXT的导入导出。那我们就直接来看代码吧,没什么难点,注意好流的关闭和异
常处理就好。
package com.lwl.util; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.List; /** * CSV操作(导出和导入) * @author liuweilong@zhicall.com * @create 2016-4-27 上午9:47:27 * @version 1.0 */ public class CSVUtils { /** * 导出 * @param file csv文件(路径+文件名),csv文件不存在会自动创建 * @param dataList 数据 * @param heads 表头 * @return * @author liuweilong@zhicall.com * @create 2016-4-27 上午9:49:49 */ public static boolean exportCsv(File file, List<String> dataList,String heads){ FileOutputStream out=null; try { out = new FileOutputStream(file); return exportCsvByOS(out, dataList, heads); } catch (FileNotFoundException e) { e.printStackTrace(); return false; } } /** * 导出 * @param out 输出流 * @param dataList 数据 * @param heads 表头 * @return * @author liuweilong@zhicall.com * @create 2016-4-27 上午9:49:49 */ public static boolean exportCsvByOS(OutputStream out, List<String> dataList,String heads){ boolean isSucess=false; OutputStreamWriter osw=null; BufferedWriter bw=null; try { osw = new OutputStreamWriter(out); bw =new BufferedWriter(osw); //循环表头 if(heads!=null&&!heads.equals("")){ bw.append(heads).append("\r"); } //循环数据 if(dataList!=null && !dataList.isEmpty()){ for(String data : dataList){ bw.append(data).append("\r"); } } isSucess=true; } catch (Exception e) { e.printStackTrace(); isSucess=false; }finally{ if(bw!=null){ try { bw.close(); bw=null; } catch (IOException e) { e.printStackTrace(); } } if(osw!=null){ try { osw.close(); osw=null; } catch (IOException e) { e.printStackTrace(); } } if(out!=null){ try { out.close(); out=null; } catch (IOException e) { e.printStackTrace(); } } } return isSucess; } /** * 导入 * * @param file csv文件(路径+文件) * @return */ public static List<String> importCsv(File file){ List<String> dataList=new ArrayList<String>(); BufferedReader br=null; try { br = new BufferedReader(new FileReader(file)); String line = ""; while ((line = br.readLine()) != null) { dataList.add(line); } }catch (Exception e) { }finally{ if(br!=null){ try { br.close(); br=null; } catch (IOException e) { e.printStackTrace(); } } } return dataList; } /** * 测试 * @param args * @author liuweilong@zhicall.com * @create 2016-4-27 上午10:11:46 */ public static void main(String[] args) { //导出数据测试 // List<String> dataList=new ArrayList<String>(); // dataList.add("1,张三,男"); // dataList.add("2,李四,男"); // dataList.add("3,小红,女"); // File file = new File("E:/test"); // if(!file.exists()){ // file.mkdir(); // } // boolean isSuccess=CSVUtils.exportCsv(new File("E:/test/ljq.csv"), dataList,"编码,姓名,性别"); // System.out.println(isSuccess); //导入数据测试 List<String> dataList= CSVUtils.importCsv(new File("E:/test/ljq.csv")); for (String string : dataList) { System.out.println(string); } } }
代码很简单,而且已经给出测试用例,直接贴近项目即可使用。
相关文章
- 使用imp和exp命令对Oracle数据库进行导入导出操作详解
- Docker images导出和导入操作
- mysql数据库的基本操作:索引、视图,导入和导出,备份和恢复
- Elasticsearch的数据导出和导入操作(elasticdump工具),以及删除指定type的数据(delete-by-query插件)
- php实现CSV文件导入和导出
- mysql实现查询结果导出csv文件及导入csv文件到数据库操作
- txt文档操作(导出和导入)【工具包系列】
- SqlServer2012语句之实例之用SQL语句对表中数据进行操作及数据的导入和导出
- CSV操作(导出和导入)【工具包系列】
- mysql——某表所有记录的导出和导入——csv文件