代碼java
須要 :javacsv-2.1.jarcode
package readCSV; import java.io.IOException; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import com.csvreader.*; public class Read { public static void main(String[] args) { read(); } public static void read(){ String filePath = "C:/Users/donald/Desktop/AAA.csv"; try { // 建立CSV讀對象 CsvReader csvReader = new CsvReader(filePath); // 讀表頭 csvReader.readHeaders(); System.out.println(csvReader.getHeaders()); System.out.println(csvReader.getRawRecord()); System.out.println(csvReader.getDelimiter() ); String[]headers=csvReader.getHeaders(); int a = 1;//開始以行數 List<String[]> contents = new ArrayList<>(); // 內容隊列 int b = 20170001;//文件名結尾部分 String filename ; // 文件名 while (csvReader.readRecord()){ if(a % 40000!=0){ // 讀一整行 // System.out.println(csvReader.getRawRecord()); // System.out.println(csvReader.getValues()[0]); // 讀這行的某一列 // System.out.println(csvReader.get("Vendor")); contents.add(csvReader.getValues()); a++; }else{ contents.add(csvReader.getValues()); a++; filename ="bbb"+b+".csv"; b++; write(filename,headers,contents); contents.clear(); } } // 最後再執行一次 filename ="STKFLW-tocml-"+b+".csv"; b++; write(filename,headers,contents); System.out.println("最後的文件名:"+filename); System.out.println("最後一行的line_no:"+a); contents.clear(); } catch (IOException e) { e.printStackTrace(); } } public static void write(String filename ,String[] headers,List<String[]> contents){ String filePath = "C:/Users/donald/Desktop/split/"+filename; try { // 建立CSV寫對象 CsvWriter csvWriter = new CsvWriter(filePath,',', Charset.forName("utf-8")); //設置內容都用""包起來 csvWriter.setForceQualifier(true); csvWriter.setTextQualifier('"'); csvWriter.setUseTextQualifier(false); //CsvWriter csvWriter = new CsvWriter(filePath); // 寫表頭 // String[] headers = {"編號","姓名","年齡"}; // String[] content = {"12365","張山","34"}; csvWriter.writeRecord(headers); //遍歷List裏面的內容,寫在文本里面 for (String[] content : contents) { csvWriter.writeRecord(content); } csvWriter.close(); } catch (IOException e) { e.printStackTrace(); } } }
以前因爲循環的if 條件寫錯了,建立了大量空文件csv 文件,一瞬間就幾萬個文件夾,容易把電腦搞死對象