通过 CsvListWriter 读写.csv文件辅助类
2015-08-02 17:00
555 查看
package cn.gov.cnis.db; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.supercsv.io.CsvListReader; import org.supercsv.io.CsvListWriter; import org.supercsv.prefs.CsvPreference; public class OperateCsv { /** * 读取csv文件(不带头部) * * @param String filePath * @return csv文件组装成list * @throws IOException */ static public List<String[]> getContentFromFile(String filePath) throws IOException { File file = new File(filePath); List<String[]> content = new ArrayList<String[]>(); CsvListReader reader = new CsvListReader(new FileReader (file), CsvPreference.EXCEL_PREFERENCE); reader.getCSVHeader(true);// 去除头部字段声明 List<String> line = new ArrayList<String>(); while ((line = reader.read()) != null) { content.add(line.toArray(new String[] {})); } return content; } /** * 读取csv文件(带头部) * * @param String filePath * @return csv文件组装成list * @throws IOException */ static public List<String[]> getDetailFromFile(String filePath) throws IOException { File file = new File(filePath); List<String[]> content = new ArrayList<String[]>(); CsvListReader reader = new CsvListReader(new FileReader(file), CsvPreference.EXCEL_PREFERENCE); String[] header = reader.getCSVHeader(true); content.add(header); List<String> line = new ArrayList<String>(); while ((line = reader.read()) != null) { content.add(line.toArray(new String[] {})); } return content; } /** * 读取csv文件的头部 * * @param String filePath * @return csv文件的头部 * @throws IOException */ static public String[] getHeaderFromFile(String filePath) throws IOException { File file = new File(filePath); CsvListReader reader = new CsvListReader(new FileReader (file), CsvPreference.EXCEL_PREFERENCE); return reader.getCSVHeader(true); } /** * 写入csv文件 * * @param String filePath * @param header * 头部 * @param content * 内容 * @throws IOException */ static public void writeToCsv(String filePath, String[] header, List<String[]> content) throws IOException { File file = new File(filePath); CsvListWriter writer = new CsvListWriter(new FileWriter(file), CsvPreference.EXCEL_PREFERENCE); writer.writeHeader(header); for (String[] str : content) { writer.write(str); } writer.close(); } /** * 写入csv文件 * * @param String filePath * @param content * 内容 * @throws IOException */ static public void writeContentToCsv(String filePath, List<String[]> content) throws IOException { File file = new File(filePath); CsvListWriter writer = new CsvListWriter(new FileWriter(file),CsvPreference.EXCEL_PREFERENCE); for (String[] str : content) { writer.write(str); } writer.close(); } /** * 写入csv文件(头部) * * @param String filePath * @param content * 内容 * @throws IOException */ static public void writeHeaderToCsv(String filePath, String[] header) throws IOException { File file = new File(filePath); CsvListWriter writer = new CsvListWriter(new FileWriter(file),CsvPreference.EXCEL_PREFERENCE); writer.writeHeader(header); writer.close(); } public static void main(String[] args) throws IOException { OperateCsv operateCsv = new OperateCsv(); String file = "e:/Projects/Java/luke-3.4.0_1/AVDDOCS/export/73602.csv"; List<String[]> content = operateCsv.getDetailFromFile(file); String[] header = operateCsv.getHeaderFromFile(file); for (String[] str : content) { for (int i = 0; i < str.length; i++) { System.out.println(str[i] + " " + str[i + 1] + " " + str[i + 2] + " " + str[i + 3]); i = i + 4; // System.out.println(str[i]); } String file1 = "D:/2.csv"; operateCsv.writeToCsv(file1, header, content); operateCsv.writeHeaderToCsv(file1, header); operateCsv.writeContentToCsv(file1, content); } } }
相关文章推荐
- [深入理解Android卷一全文-第九章]深入理解Vold和Rild
- [深入理解Android卷一全文-第十章]深入理解MediaScanner
- leetcode 91: Decode Ways
- 浅析绑定远程服务bindService基本原理与AIDL分析
- hdu 5336 XYZ and Drops 2015 Multi-University Training Contest 4 10
- 235 Lowest Common Ancestor of a Binary Search Tree
- 33 蛇形填数
- 02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译
- [深入理解Android卷一全文-第七章]深入理解Audio系统
- [深入理解Android卷一全文-第八章]深入理解Surface系统
- 02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译
- 设计模式--工厂模式
- iOS UIScrollView
- [深入理解Android卷一全文-第六章]深入理解Binder
- C语言编程入门——指针与函数、数组
- 第一篇T语言实例开发(版本5.3),带错误检测的加减乘除运算器
- Coursera台大机器学习技法课程笔记10-Random forest
- [leedcode 168] Excel Sheet Column Title
- Searching for Nessy
- HibernateTemplate实现分页