Java解析CSV文件并导出数据

Java解析CSV文件并导出筛选过得数据

pom.xml引入jar包

<!--csv-->
<dependency>
    <groupId>com.opencsv</groupId>
    <artifactId>opencsv</artifactId>
    <version>4.4</version>
</dependency>

使用IO流解析,转化数组形式

/**
  * <b>将csv文件通过IO流解析,转化数组形式的集合<b>
  *
  * @param fileName 文件(路径+csv文件名)
  */
public static List<String[]> csv(String fileName) {
    List<String[]> csvList = new ArrayList<String[]>();
    if (null != fileName) {
        try {
            InputStreamReader is = new InputStreamReader(new FileInputStream(fileName),"gbk");
            CSVParser csvParser = new CSVParserBuilder().build();
            CSVReader reader = new CSVReaderBuilder(is).withCSVParser(csvParser).build();
            csvList = reader.readAll();
        }catch (UnsupportedEncodingException e){
            e.printStackTrace();
        }catch (IOException e) {
            e.printStackTrace();
        }
    }
    return csvList;
}

测试并解析需要的数据并导出到对应文件

public static void main(String[] args) throws IOException {
//        读取的csv文件
        List<String[]> csv = csv("F:/interCode/interCode.csv");
//         保存数据的文件
        File file = new File("F:/interCode/interCode.txt");
        if (file.exists()) {
            file.mkdirs();
        }
        FileOutputStream outputStream = null;
        for (String[] strings : csv) {
            String trim = strings[0].trim();
//         业务处理逻辑
            String s = encodeBase(trim);
            if (!s.equals("传递参数不完整!")) {
                outputStream = new FileOutputStream(file,true);
                byte[] bytes = s.getBytes();
//                写入数据
                outputStream.write(bytes);
//                换行
                outputStream.write("\r\n".getBytes());
            }
        }
        System.out.println("执行结束!");
//        关闭流
        outputStream.close();
    }

此处不做过多描述,C+V即用,根据自行情况稍加改动即可,代码中都有相关注释

 

posted @ 2022-02-10 17:14  阿尔法哲  阅读(858)  评论(0编辑  收藏  举报