OpenCsv使用

导读:本篇文章讲解 OpenCsv使用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

说明

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/72655.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!