csv操做

須要引入javacsv.jarjava

如下爲一個完整的Utils的寫法,具體輸出和輸入須要本身修改參數。spring

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.Random;

import org.springframework.util.StringUtils;

import com.csvreader.CsvReader;
import com.csvreader.CsvWriter;

/**
 * 獲取和寫入csv文件內容
 * <p>
 * @author DennyZhao
 * @since 1.0.0
 */
public class CSVUtils {

    /**
     * 默認分隔符
     */
    private static final char DEFAULT_SEPERATE_CHAR = ',';
    /**
     * 默認charset
     */
    private static final Charset DEFAULT_CHARSET = Charset.defaultCharset();
    
    /**
     * 寫數據
     * @param targetFilePath
     * @param fileName
     * @param seperateChar
     * @param charsetName
     * @throws IOException
     */
    public static void writeFile(String targetFilePath, String fileName, char seperateChar, String charsetName) throws IOException {
     // 判斷文件是否存在
        File file = new File(targetFilePath);
        if(!file.exists()) {
            file.mkdirs();
        }
        // 判斷是否有seperateChar
        if(seperateChar == 0) {
            seperateChar = DEFAULT_SEPERATE_CHAR;
        }
        // 判斷是否有charset
        Charset charset = DEFAULT_CHARSET;
        if(!StringUtils.isEmpty(charsetName)) {
            charset = Charset.forName(charsetName);
        }
        String filePath = targetFilePath + File.separatorChar + fileName;
        // 獲取csv文件及其數據
        CsvWriter csvWriter = new CsvWriter(filePath, seperateChar, charset);
        csvWriter.setForceQualifier(true);          //這個決定了通常文件打開是否是有「」存在
        String[] strHeader = {"userId","userName", "userAge"};
        csvWriter.writeRecord(strHeader);
        for(int i=0; i < 50; i++) {
            String[] strArray = {i + "","張三" + i, (new Random()).nextInt(100) + ""};
            csvWriter.writeRecord(strArray);
        }
        csvWriter.endRecord();
        csvWriter.close();
    }
    
    /**
     * 讀取csv文件中的數據
     * @param originFile 要讀入的文件
     * @param seperateChar 分割符
     * @param charsetName 編碼格式
     * @throws IOException 
     */
    public static void readFile(String originFile, char seperateChar, String charsetName) throws IOException {
        // 判斷文件是否存在
        File file = new File(originFile);
        if(!file.exists()) {
            System.out.println("file is not exist...");
            return;
        }
        // 判斷是否有seperateChar
        if(seperateChar == 0) {
            seperateChar = DEFAULT_SEPERATE_CHAR;
        }
        // 判斷是否有charset
        Charset charset = DEFAULT_CHARSET;
        if(!StringUtils.isEmpty(charsetName)) {
            charset = Charset.forName(charsetName);
        }
        // 獲取csv文件及其數據
        CsvReader csvReader = new CsvReader(originFile, seperateChar, charset);
        while(csvReader.readRecord()) {
            //讀取完畢
            if(csvReader.getColumnCount() == 0) {
                break;
            }
            long index = csvReader.getCurrentRecord();   //當前記錄index
            System.out.println("index:  " + index);
            if(index == 0) {
                String[] headerArray = csvReader.getValues();
            }
            String userName = csvReader.get(1);          //讀取單條數據
            String[] valArray = csvReader.getValues();   //讀取數據變爲數組
            String recorder = csvReader.getRawRecord();  //直接讀取一行數據
        }
        csvReader.close();
    }
    
    
    
    public static void main(String[] args) throws IOException {
        // 讀數據
        //String originFile = "C:\\Users\\zhaoq\\Desktop\\reader.csv";
        //readFile(originFile, ',', "gb2312");
        
        // 寫數據
        String targetFilePath = "C:\\Users\\zhaoq\\Desktop";
        String fileName = "writer.csv";
        writeFile(targetFilePath, fileName, ',', "gb2312");
    }

}
相關文章
相關標籤/搜索