Java(78)Java读取和写入CSV文件工具类(Bean)

Java读取和写入CSV文件工具类(Bean)

1、工具类CsvUtils.java

package com.xxx.utils;



import com.xxx.csvData;



import java.io.*;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;



/**

 * @author : HMF

 * @ClassName CsvUtil

 * @description 读取和写入csv的工具类

 * @date: 2022/2/25 21:37

 **/





public class CsvUtils {

    public static BufferedReader reader;

    public static BufferedWriter bw;

    public static int linkNumber;



    public static void closeAll() {

        try {

            if(reader != null)

                reader.close();

            if(bw != null)

                bw.close();

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    /**

     * 读取CSV格式的文档数据

     * @param filePath CSV格式的文件路劲

     * @return dataList csv数据读取放入二维list中。

     */

    public static List<List<String>> readCSVFileData(String filePath){

        List<List<String>> dataList=new ArrayList<>();

        try {

            reader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8"));

        }catch(FileNotFoundException | UnsupportedEncodingException e){

            e.printStackTrace();

        }

        try{

            String line=null;

            while ((line=reader.readLine())!=null){

                String aa[]=line.split(",");

                List<String> cellList= Arrays.asList(aa);

                //System.out.println(cellList);

                dataList.add(cellList);

            }

            closeAll();

        } catch (Exception e) {

            e.printStackTrace();

        }



        return dataList;

    }



    public static List<csvData>  readData(String filePath){

        List<List<String>> dataList=readCSVFileData(filePath);

        System.out.println(dataList);

        List<csvData> csvList=new ArrayList<>();

        for(int i = 0; i<dataList.size(); i++){

            if(i !=0) {

                csvData data=new csvData();

                data.setId(Integer.parseInt(dataList.get(i).get(0)));

                data.setName(dataList.get(i).get(1));

                data.setAge(Integer.parseInt(dataList.get(i).get(2)));

                csvList.add(data);

            }

        }

        return csvList;

    }



    /**

     * 读取CSV格式的文档数据

     * @param filePath CSV格式的文件路劲

     * @param data 需要写入的数据

     * @return dataList csv数据读取放入二维list中。

     */

    public static void writeCSVFileData(String filePath, csvData data){

        try {

            bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath, true), "UTF-8"));

            if(linkNumber==0){

                bw.write("编号"+","+"姓名"+","+"年龄");

                bw.newLine();

                ++linkNumber;

            }

            bw.write(data.getId()+","+data.getName()+","+data.getAge());

            bw.newLine();

            bw.flush();

            closeAll();

        } catch (Exception e) {

            closeAll();

            e.printStackTrace();

            System.exit(0);

        }

    }

}

2、实体类csvData.java

这里示例有3个字段:id,name,age

package com.xxx;



/**

 * @author : HMF

 * @ClassName csvData

 * @description 数据

 * @date: 2022/2/26 18:03

 **/



public class csvData {

    private int id;

    private String name;

    private int age;



    public int getId() {

        return id;

    }

    public void setId(int id) {

        this.id = id;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

}

data.csv数据

3、执行类

import java.util.ArrayList;

import java.util.List;



import com.xxx.csvData;

import com.xxx.utils.CsvUtils;



/**

 * @author : HMF

 * @ClassName ReadFileTest

 * @description TODO

 * @date: 2022/2/25 21:37

 **/





public class ReadFileTest {

    public static void main(String[] args) {

        //读取

        List<csvData> csvList=CsvUtils.readData("./data.csv");

        for (int i=0;i<csvList.size();i++) {

            System.out.println(csvList.get(i).getId()+" "+csvList.get(i).getName()+" "+csvList.get(i).getAge());

        }

        //写入

        List<csvData> csvList2=new ArrayList<>();

        csvData a1=new csvData();

        a1.setId(1);

        a1.setName("张三");

        a1.setAge(25);

        csvList2.add(a1);

        csvData a2=new csvData();

        a2.setId(2);

        a2.setName("李四");

        a2.setAge(30);

        csvList2.add(a2);



        for (csvData data:csvList2) {

            //System.out.println(data.getId()+" "+data.getName()+" "+data.getAge());

            CsvUtils.writeCSVFileData("./result.csv", data);

        }

    }

}

执行结果:

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁宁可可

您的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值