zoukankan      html  css  js  c++  java
  • CSVFileUtil 读取写入CSV文件简单工具类

    参考github大神源码 总结一下最简单的工具类记录一下

    /**
     * @description CSV文件读取和输出 工具类.<br/>
     * @author michael
     * @date 2019/05/16
     * @version Copyright (c) 2019, michael.xie@adsnova.cn All Rights Reserved.
     */
    public class CSVFileUtil {
    
        private static final Logger LOGGER = LoggerFactory.getLogger(CSVFileUtil.class);
    
        public static final String ENCODE = "UTF-8";
    
        /**
         * readCsv:根据路径读取CSV文件.<br/>
         * 
         * @param csvFilePath
         * @return
         */
        public static List<String[]> readCsv(String csvFilePath) {
            List<String[]> csvList = new ArrayList<String[]>();
            try {
                CsvReader reader = new CsvReader(csvFilePath, ',', Charset.forName(ENCODE));
                /** 跳过表头 如果需要表头的话,不要写这句 */
                reader.readHeaders();
                while (reader.readRecord()) {
                    csvList.add(reader.getValues());
                }
                reader.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
                LOGGER.error("read csv file error. : {}", e.getLocalizedMessage());
            } catch (IOException e) {
                e.printStackTrace();
                LOGGER.error("read csv file error. : {}", e.getLocalizedMessage());
            }
            return csvList;
        }
    
        /**
         * readCsv:根据数据流读取CSV文件.<br/>
         * 
         * @param csvIs
         * @return
         */
        public static List<String[]> readCsv(InputStream csvIs) {
    
            List<String[]> csvList = new ArrayList<String[]>();
            try {
                CsvReader reader = new CsvReader(csvIs, Charset.forName(ENCODE));
                /** 跳过表头 如果需要表头的话,不需要写这句 */
                reader.readHeaders();
                while (reader.readRecord()) {
                    csvList.add(reader.getValues());
                }
                reader.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
                LOGGER.error("read csv inputStream error. : {}", e.getLocalizedMessage());
            } catch (IOException e) {
                e.printStackTrace();
                LOGGER.error("read csv inputStream error. : {}", e.getLocalizedMessage());
            }
            return csvList;
        }
    
        /**
         * writeCsv:把内容写入到文件中.<br/>
         * 
         * @param csvFilePath
         * @param contents
         */
        public static void writeCsv(String csvFilePath, List<String[]> contents) {
            try {
                CsvWriter wr = new CsvWriter(csvFilePath, ',', Charset.forName(ENCODE));
                for (int i = 0; i < contents.size(); i++) {
                    wr.writeRecord(contents.get(i));
                }
                wr.close();
            } catch (IOException e) {
                e.printStackTrace();
                LOGGER.error("write csv file error. : {}", e.getLocalizedMessage());
            }
        }
    
        /**
         * 
         * writeCsv:把内容写到输出流.<br/>
         * 
         * @param ou
         * @param list
         */
        public static void writeCsv(OutputStream ou, List<String[]> list) {
            CsvWriter cw = null;
            try {
                cw = new CsvWriter(ou, ',', Charset.forName(ENCODE));
                for (String[] s : list) {
                    cw.writeRecord(s);
                }
                // 在文件中增加BOM,该处的byte[] 可以针对不同编码进行修改
                ou.write(new byte[] {(byte)0xEF, (byte)0xBB, (byte)0xBF});
                cw.flush();
            } catch (IOException e) {
                e.printStackTrace();
                LOGGER.error("write csv outputStream error. : {}", e.getLocalizedMessage());
            } finally {
                if (null != cw) {
                    cw.close();
                }
            }
    
        }
    
    }
    欢迎一起来学习和指导,谢谢关注!
  • 相关阅读:
    4、数组及字符串
    3、处理数据
    2、开始学习C++
    1、C++学习预备知识
    Django【进阶篇 】
    Django【基础篇】
    Python操作MySQL
    MySQL(二)
    python日记-使用队列写出特殊字数串
    python日记-快速排序算法
  • 原文地址:https://www.cnblogs.com/mask-xiexie/p/10880564.html
Copyright © 2011-2022 走看看