OpenCsv使用

说明

OpenCsv是一个非常简单的CSV解析库,帮助我们更好处理CSV格式文件。

<!-- 使用opencsv -->
<dependency>
    <groupId>com.opencsv</groupId>
    <artifactId>opencsv</artifactId>
    <version>4.5</version>
</dependency>

OpenCsv具体使用

样例csvtest.csv数据,格式编码为UTF-8

"name","sex","age"
"柳梦璃","女","16"
"云天河","男","17"
"韩菱纱","女","17"
"王小二","男","16,17"

OpenCsv读数据

根据CSVReader将文件内容读出来,注意最后一条“王小二”这条数据也能正常读出来,如果自己使用“,”分隔容易错列。

    /**
     * 读取一个csv文件
     */
    public static void readCsv() {
        String mypath = "D:\\WorkSpace\\IDEA_WorkSpace\\sortalgorithm-demos\\src\\main\\resources\\csvtest.csv";
        //以","作为解析的分隔符
        CSVParser csvParser = new CSVParserBuilder().withSeparator(',').build();
        //使用try(){}catch()这种语法资源会自动关闭不需要自己finally里关闭资源,推荐使用
        try (CSVReader readerCsv = new CSVReaderBuilder(Files.newBufferedReader(Paths.get(mypath), StandardCharsets.UTF_8)).withCSVParser(csvParser).withSkipLines(1).build()) {
            String lines[];
            while ((lines = readerCsv.readNext()) != null) {
                Arrays.asList(lines).forEach(System.out::println);
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

输出结果:

柳梦璃
女
16
云天河
男
17
韩菱纱
女
17
王小二
男
16,17

OpenCsv写数据

将内容输出到文件,默认CSV格式文件是以“,”隔开的。

    /**
     * 写数据
     */
    public static void writeCsv() {
        String myPath = "D:\\WorkSpace\\IDEA_WorkSpace\\sortalgorithm-demos\\src\\main\\resources\\csvouttest.csv";
        String[] data1 = {"姓名", "性别", "年龄"};
        String[] data2 = {"云天明", "男", "17"};
        String[] data3 = {"韩菱纱", "女", "16"};

        //将数据放到列表里面
        List<String[]> datas = new ArrayList();
        datas.add(data1);
        datas.add(data2);
        datas.add(data3);

        //将内容输入到文件
        try (CSVWriter writer = new CSVWriter(Files.newBufferedWriter(Paths.get(myPath), StandardCharsets.UTF_8),
                CSVWriter.DEFAULT_SEPARATOR,
                CSVWriter.NO_QUOTE_CHARACTER,
                CSVWriter.NO_ESCAPE_CHARACTER,
                CSVWriter.DEFAULT_LINE_END)) {
            //写数据到文件
            writer.writeAll(datas);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

得到文件内容:

姓名,性别,年龄
云天明,,17
韩菱纱,,16
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

leo825...

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值