CSVFileUtil 读取写入CSV文件简单工具类

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

/**
 * @description CSV文件读取和输出 工具类.<br/>
 * @author michael
 * @date 2019/05/16
 * @version Copyright (c) 2019, [email protected] 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();
            }
        }

    }

}

原文地址:https://www.cnblogs.com/mask-xiexie/p/10880564.html

时间: 2024-10-13 09:13:13

CSVFileUtil 读取写入CSV文件简单工具类的相关文章

009-Go 读取写入CSV文件

package main import( "encoding/csv" "fmt" "os" "strconv" ) type Post struct{ Id int Content string Author string } func main(){ csvFile, err := os.Create("posts.csv") if err!= nil{ panic(err) } defer csvFi

Jsoup学习笔记9:Jsoup 解析saz文件,读取其中的htm文件到字符串,提取字符串中的数据写入csv文件中

本篇笔记将上篇笔记的操作做些改进,不再把saz文件中的htm文件解析出来,而是不解压直接读取其中的数据成字符串,基本思路如下: 1.自定义一个从文本文件读取内容到字符串的类:解析saz文件中的htm文档,将文件的内容读取到字符串中 2.自定义利用Jsoup解析htm字符串的类:利用Jsoup解析传入的htm字符串,将解析结果写入csv文件中 3.解析时,指定好文件路径,直接调用上面的两个工具类即可 示例代码如下: package com.daxiang.saztest; /** * 自定义一个从

python读取并写入csv文件

新建csvData.csv文件 1 import csv 2 3 # 读取csv文件方式1 4 csvFile = open("csvData.csv", "r") 5 reader = csv.reader(csvFile) # 返回的是迭代类型 6 data = [] 7 for item in reader: 8 print(item) 9 data.append(item) 10 11 print(data) 12 csvFile.close() 13 14

python之读取和写入csv文件

写入csv文件源码: 1 #输出数据写入CSV文件 2 import csv 3 data = [ 4 ("Mike", "male", 24), 5 ("Lee", "male", 26), 6 ("Joy", "female", 22) 7 ] 8 9 #Python3.4以后的新方式,解决空行问题 10 with open('d://write.csv', 'w', newline

读取资源文件的工具类.

import java.util.ResourceBundle; import org.springframework.util.NumberUtils; /**读取资源文件的工具类. */ public class ConfigUtil { /**读取资源文件中的键值信息. * 例如有键值名为a,其对应的值为整数类型,那么方法即为:readConfigForObject("a",Integer.class). * @param keyName 键值名 * @param require

python读取和写入csv文件

----------------python读取csv文件------------------ #导入csv 创建一个csv文件,输入内容 import csv #1.找到需要被打开的文件路径,通过open打开文件,声明打开的方式,声明编码格式 csv_file=open(r'csv文件路径', mode='r', encoding='utf-8') #2.通过csv模组提供的读取方法来读取打开的文件 csv_data=csv.reader(csv_file) #3.通过for循环遍历读取数据存

CSV文件转换帮助类

CSV是逗号分隔值格式的文件,其文件以纯文本形式存储表格数据(数字和文本).CSV文件由任意数目的记录组成,记录间以某种换行符分隔:每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符.在C#中有时候需要读取和写入Csv文件,特此封装了一个工具类CsvHelper.特此说一句,C#将数据导出到CSV文件的速度比较快,有时候导出Excel文件很慢的时候可以选择先导出.csv文件,而后再本地用Excel软件打开. CsvHelper类主要是利用C#操作Csv文件,主要包含2个

Android之文件读写工具类

本工具类永久维护,永久更新,如果各位读者发现有bug或者不合理之处,欢迎指正,博主将第一时间改正. 以下是主要内容,本类主要功能有: 1.创建文件功能: 2.向文件中写入字节数组: 3.向文件中写入字符串: 4.从文件中读取字节数组: 5.从文件中读取字符串: import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; /** * 文件读写工具类 * * @author bear *

java文件处理工具类

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileRea