Commons CSV 示例:输出 csv 格式数据

CSV
本文将介绍利用 Commons CSV 输出 CSV 格式数据到文件、控制台。

本文将介绍怎样使用 Commons CSV 输出 CSV 数据到控制台、文件等。

输出到控制台

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import static java.lang.System.out;

/**
 * 打印头部,将 CSV 打印到控制台
 * @author hxstrive.com 2021/12/26
 */
public class CsvPrinterDemo1 {

    public static void main(String[] args) throws Exception {
        // 默认将 csv 打印到控制台
        CSVPrinter printer = CSVFormat.DEFAULT.builder()
                .setHeader("ID", "NAME")
                .build()
                .print(out);

        printer.printRecord("100", "张三");
        printer.printRecord("200", "李四");
        printer.printRecord("300", "王五");
    }

}

注意:上面代码中的 out 是 System 中定义的一个静态常量,如下:

public final static PrintStream out = null;

即我们使用的 System.out.println() 中的 System.out。所以将上面代码改为如下代码也可以:

CSVPrinter printer = CSVFormat.DEFAULT.builder()
    .setHeader("ID", "NAME")
    .build()
    .print(System.out);

运行程序,控制台输出如下:

ID,NAME
100,张三
200,李四
300,王五

输出到文件

下面将介绍通过 BufferedWriter 将 CSV 数据直接输出到文件中,代码如下:

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;

/**
 * 将 CSV 内容打印到文件中
 * @author hxstrive.com 2021/12/26
 */
public class CsvPrinterDemo2 {

    public static void main(String[] args) throws Exception {
        BufferedWriter bufferedWriter = null;
        try {
            FileWriter writer = new FileWriter(new File(
                    "demo_print.csv"));
            bufferedWriter = new BufferedWriter(writer);

            // 默认将 csv 打印到控制台
            CSVPrinter printer = CSVFormat.DEFAULT.builder()
                    .setHeader("ID", "NAME")
                    .build()
                    .print(bufferedWriter);

            printer.printRecord("100", "张三");
            printer.printRecord("200", "李四");
            printer.printRecord("300", "王五");

            System.out.println("finished.");
        } finally {
            if(null != bufferedWriter) {
                bufferedWriter.flush();
                bufferedWriter.close();
            }
        }
    }

}

输出到 StringBuffer

将 CSV 内容输出到 StringBuffer,然后输出到控制台。代码如下:

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;

/**
 * 将 CSV 内容输出到 StringBuffer,然后输出到控制台
 * @author hxstrive.com 2021/12/26
 */
public class CsvPrinterDemo3 {

    public static void main(String[] args) throws Exception {
        StringBuffer buffer = new StringBuffer();

        CSVPrinter printer = CSVFormat.DEFAULT.builder()
                .setHeader("ID", "NAME")
                .build()
                .print(buffer);

        printer.printRecord("100", "张三");
        printer.printRecord("200", "李四");
        printer.printRecord("300", "王五");

        // 输出 CSV 内容
        System.out.println(buffer.toString());
    }

}

注意:在 CSVFormat 中定义了两个 print() 方法,定义如下:

  • CSVPrinter  print(Appendable out)

  • CSVPrinter  print(File out, Charset charset)

第一个 print() 接收一个实现了 java.lang.Appendable 接口的类,在 JDK 中实现了 Appendable 接口的类大概有 BufferedWriter, CharArrayWriter, CharBuffer, FileWriter, FilterWriter, LogStream, OutputStreamWriter, PipedWriter, PrintStream, PrintWriter, StringBuffer, StringBuilder, StringWriter, Writer。

第二个 print() 方法接收一个 File 和输出内容的字符串编码。

睡眠和休息丧失了时间,却取得了明天工作的精力。 —— 毛泽东
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号