package com.guoyasoft.tools.csv;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashMap;
import com.csvreader.CsvReader;
import com.csvreader.CsvWriter;
public class CSVReader {
/**
* 1. 容器:
* 1.1 固定大卸韫稀:數(shù)組年栓,先確定大小,再以下標存放數(shù)據(jù),最后以下標取數(shù)據(jù)
* 1.2 不固定大斜炒:ArrayList,先add(數(shù)據(jù))往里面添加數(shù)據(jù)(不能指定位置,因為是邊加邊擴,只能加到最后一個)剂陡,get()以下標取數(shù)據(jù)
* 1.3 不固定大小,且要按照標簽存放狐胎,按照標簽取數(shù)據(jù):HashMap鸭栖,先以put(“變量名”,數(shù)據(jù))存數(shù)據(jù)握巢,再以get("變量名")取數(shù)據(jù)
*
* 2. 循環(huán)
* 2.1 for循環(huán):for(變量類型 定義一個變量=初始值;最大值;增量)纤泵,知道最大循環(huán)次數(shù)的情況
* 2.2 while循環(huán):不知道要多少次,只知道一個結(jié)束的標識镜粤,循環(huán)到false為止
*
* 3. if(帥嗎?){ok}else if(高嗎){ok}else if(有錢嗎玻褪?){ok}else{滾犢子肉渴!}
*
* 4. try{業(yè)務(wù)邏輯}catch(Exception e){異常處理邏輯}
* 4.1 e.printStackTrace():打印報錯日志信息
* 4.2 錯誤日志閱讀方式:
* 4.2.1 從上往下讀,也就是找到日志報錯開始的地方
* 4.2.2 第一行是報錯類型
* 4.2.3 后面是具體位置带射,at在哪兒同规,然后從后往前讀
* 4.2.4 ()括號里面是哪個java文件的哪一行報錯
* 4.2.5 倒數(shù)第一個:方法名
* 4.2.6 倒數(shù)第二個:類名
* 4.2.7 倒數(shù)第三個:包名
*/
public static Object[][] readCSV(String csvFilePath) {
//try{業(yè)務(wù)代碼}catch(Exception e){如果做業(yè)務(wù)的過程中出了錯,的異常處理邏輯}
try {
//容器:對象少的時候,直接把對象列出來券勺;當對象很多的時候绪钥,要用一個容器裝起來打包
ArrayList<String[]> csvFileList = new ArrayList<String[]>();
// 這個不用背,只要看得懂會用就行关炼。創(chuàng)建CSV讀對象 例如:CsvReader(文件路徑程腹,分隔符,編碼格式);
CsvReader reader = new CsvReader(csvFilePath, ',', Charset.forName("GBK"));
// 跳過表頭 如果需要表頭的話儒拂,這句可以忽略
reader.readHeaders();
// 逐行讀入除表頭的數(shù)據(jù)
//boolean變量:真假true或者false
while (reader.readRecord()) {
System.out.println(reader.getRawRecord());
//將一行的字符串按照“寸潦,”逗號分成多列,存放到String[]數(shù)組中
//再將這個string[]放到list容器中存起來
csvFileList.add(reader.getValues());
}
//數(shù)據(jù)取完了社痛,關(guān)閉文件
reader.close();
// 遍歷讀取的CSV文件
//for是一個整數(shù)次的循環(huán)见转,三個參數(shù):最小值,最大值蒜哀,增量斩箫,取個變量名存放每次循環(huán)的序列值
Object[][] result=new Object[csvFileList.size()][csvFileList.get(0).length];
for (int row = 0; row < csvFileList.size(); row++) {
result[row]=csvFileList.get(row);
}
return result;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static void writeCSV(String csvFilePath) {
try {
// 創(chuàng)建CSV寫對象 例如:CsvWriter(文件路徑,分隔符撵儿,編碼格式);
CsvWriter csvWriter = new CsvWriter(csvFilePath, ',', Charset.forName("UTF-8"));
// 寫表頭
String[] csvHeaders = { "編號", "姓名", "年齡" };
csvWriter.writeRecord(csvHeaders);
// 寫內(nèi)容
for (int i = 0; i < 20; i++) {
String[] csvContent = { i + "000000", "StemQ", "1" + i };
csvWriter.writeRecord(csvContent);
}
csvWriter.close();
System.out.println("--------CSV文件已經(jīng)寫入--------");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//JavaCSV.writeCSV(csvFilePath);
CSVReader.readCSV("C:\\softwareData\\workspace\\guoya-test\\src\\main\\resources\\testNG\\searchData.csv");
}
}
?byGuoyasoftware