JAVA操作csv文件(导入导出)
2015-11-10 09:50
751 查看
CSV是逗号分隔文件(Comma Separated Values)的首字母英文缩写,是一种用来存储数据的纯文本格式,通常用于电子表格或数据库软件。在 CSV文件中,数据“栏”以逗号分隔,可允许程序通过读取文件为数据重新创建正确的栏结构,并在每次遇到逗号时开始新的一栏。
1、csv文件用文本打开显示为:
2、csv文件用Excel打开显示为:
一、利用javacsv2.0操作csv文件:
二、利用流操作csv文件
源码:http://pan.baidu.com/s/1nt1r7ap
参考:http://write.blog.csdn.net/postedit/49755535
1、csv文件用文本打开显示为:
1,张三,男 2,李四,男 3,小红,女
2、csv文件用Excel打开显示为:
一、利用javacsv2.0操作csv文件:
package com.iflytek.demo; import java.io.FileOutputStream; import java.io.IOException; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import com.csvreader.CsvReader; import com.csvreader.CsvWriter; /** * 利用javacsv2.0做导入导出csv文件工具类<br/> * * * @author kpchen * */ public class CSVUtil { static char separator = ','; public static void main(String[] args) throws Exception { // 测试导出 String filePath = "D:/test.csv"; List<String[]> dataList = new ArrayList<String[]>(); for (int i = 0; i < 10; i++) { dataList.add(new String[] { "0" + i, "小明" + i, "java" + i }); } exportCsv(dataList, filePath); // 测试导入 List<String[]> datas = importCsv(filePath); for (String[] strings : datas) { System.out.println(strings[0]); } } /** * java导入csv文件 * * @param filePath * 导入路径 * @return * @throws Exception */ public static List<String[]> importCsv(String filePath) throws Exception { CsvReader reader = null; List<String[]> dataList = new ArrayList<String[]>(); try { reader = new CsvReader(filePath, separator, Charset.forName("GBK")); // 读取表头 reader.readHeaders(); // 逐条读取记录,直至读完 while (reader.readRecord()) { dataList.add(reader.getRawRecord().split(",")); // // 下面是几个常用的方法 // 读取一条记录 System.out.println(reader.getRawRecord()); // 按列名读取这条记录的值 System.out.println(reader.get(0)); System.out.println(reader.get(1)); System.out.println(reader.get(2)); System.out.println(reader.get(3)); } } catch (Exception e) { System.out.println("读取CSV出错..." + e); throw e; } finally { if (null != reader) { reader.close(); } } return dataList; } /** * java导出cvs文件 * * @param dataList * 数据集 * @param filePath * 导出路径 * @return * @throws Exception */ public static boolean exportCsv(List<String[]> dataList, String filePath) throws Exception { boolean isSuccess = false; CsvWriter writer = null; FileOutputStream out = null; try { out = new FileOutputStream(filePath, true); writer = new CsvWriter(out, separator, Charset.forName("GBK")); for (String[] strs : dataList) { writer.writeRecord(strs); } isSuccess = true; } catch (Exception e) { System.out.println("生成CSV出错..." + e); throw e; } finally { if (null != writer) { writer.close(); } if (null != out) { try { out.close(); } catch (IOException e) { System.out.println("exportCsv close Exception: " + e); throw e; } } } return isSuccess; } }
二、利用流操作csv文件
package com.iflytek.demo; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.List; public class CSVUtil2 { public static void main(String[] args) { // 测试 导出 // List<String> dataList = new ArrayList<String>(); // dataList.add("1,张三,男"); // dataList.add("2,李四,男"); // dataList.add("3,小红,女"); // boolean isSuccess = exportCsv(new File("D:/test.csv"), dataList); // System.out.println(isSuccess); // 测试 导入 List<String> dataList = importCsv(new File("D:/test.csv")); if (dataList != null && !dataList.isEmpty()) { for (String data : dataList) { System.out.println(data); } } } /** * 导出 * * @param file * csv文件(路径+文件名),csv文件不存在会自动创建 * @param dataList * 数据 * @return */ public static boolean exportCsv(File file, List<String> dataList) { boolean isSucess = false; FileOutputStream out = null; OutputStreamWriter osw = null; BufferedWriter bw = null; try { out = new FileOutputStream(file); osw = new OutputStreamWriter(out); bw = new BufferedWriter(osw); if (dataList != null && !dataList.isEmpty()) { for (String data : dataList) { bw.append(data).append("\r\n"); } } isSucess = true; } catch (Exception e) { 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; } }
源码:http://pan.baidu.com/s/1nt1r7ap
参考:http://write.blog.csdn.net/postedit/49755535
相关文章推荐
- java 随机生成数字和密码
- java泛型见解
- java反射之Field 获取对象属性及设置属性值
- Launch4j 使用,对java项目的操作打包exe
- Spring Security3 - MVC 整合教程 (初识Spring Security3)
- Java 单例模式详解
- struts2搭建项目的架包(3)
- Spring框架简介---使用场景
- java编程细节01
- spring mvc 框架的基础条件 2
- final关键字
- 实例展示使用Java压缩和解压缩7z文件的方法
- Could not create the view: An unexpected exception was thrown.
- 使用eclipse找回eclipse中误删的文件
- Java中的String与常量池
- easyUI form提交与springMVC交互时服务端返回的错误处理
- { Java Puzzlers } Summary
- Java的异常处理机制
- (java)输出前一天的当前时间
- java线程的基础知识