首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

使用 Javacsv.jar 輕鬆操作 CSV 文件完整指南

     編輯:Java 相關知識

簡介

CSV(Comma-Separated Values)是一種常見的分隔符文件格式,若直接使用 Java 的 IO 流讀寫,代碼較為繁瑣。本文介紹一個實用的第三方庫 Javacsv.jar,能大幅簡化 CSV 文件的解析與生成操作。

獲取 JAR 包

可從以下地址下載已包含依賴的壓縮包:

https://xiazai.jb51.net/201608/yuanma/javcsv(jb51.net).rar

核心用法示例

下面的完整單元測試展示如何讀取一個 CSV 文件,並將特定欄位寫入新文件:

import com.csvreader.CsvReader;
import com.csvreader.CsvWriter;
import org.junit.Test;
import java.io.IOException;
import java.nio.charset.Charset;

public class TestCVS {

    @Test
    public void exportCsv() throws IOException {
        String srcCSV = "F:/cnt_programa.csv";
        String targetFile = "F:/test.csv";

        CsvReader reader = new CsvReader(srcCSV, ',', Charset.forName("UTF-8"));
        CsvWriter writer = new CsvWriter(targetFile, ',', Charset.forName("UTF-8"));

        // 強制所有欄位加上雙引號
        writer.setForceQualifier(true);

        String[] header = {};
        while (reader.readRecord()) {
            // 保存表頭
            if (reader.getCurrentRecord() == 0) {
                header = reader.getValues();
            }

            System.out.print(reader.getCurrentRecord() + ".");
            System.out.println(reader.getRawRecord());

            String[] tmp = {reader.getValues()[0], reader.getValues()[1]};

            // 若第二欄為空或與表頭不同,則填入「空」
            if (!header[1].equals(tmp[1]) && ("".equals(tmp[1]) || tmp == null)) {
                tmp[1] = "空";
                writer.writeRecord(tmp);
            } else {
                writer.writeRecord(new String[]{reader.getValues()[0], reader.getValues()[1]});
            }
        }
        reader.close();
        writer.close();
    }
}

示例數據

源文件 cnt_programa.csv

"id","pid","no","serial","name","createtime"
"100000","","No100000","","公司消息","2016/8/23 17:12:09"
"100001","","No100001","","熱門資訊","2016/8/24 17:12:36"
"100046","100001","No100046","1","銀行動態","2016/8/1 10:36:31"
"100052","100001","No100052","2","司法法規","2016/8/2 20:39:10"
"100088","100001","No100088","3","專業文庫","2016/8/5 19:05:47"

生成文件 test.csv

"id","pid"
"100000","空"
"100001","空"
"100046","100001"
"100052","100001"
"100088","100001"

總結

通過 CsvReader 與 CsvWriter 類,開發者能以極少的代碼完成 CSV 的讀取、轉換與寫入。該庫自動處理編碼、分隔符、引號轉義等細節,非常適合批量數據導入導出場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved