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 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号