csv文件追加寫


csv文件其實就是格式化的txt文件,所以操作和txt文件差不多,直接上代碼了

1、相關jar包代碼

<dependency>  

        <groupId>commons-lang</groupId>  

        <artifactId>commons-lang</artifactId>  

        <version>2.5</version>  

    </dependency>  

    <dependency>  

        <groupId>org.ostermiller</groupId>  

        <artifactId>utils</artifactId>  

        <version>1.07.00</version>  

    </dependency>

 

2、Csv文件寫操作類代碼

import java.io.File;  

import java.io.FileOutputStream;  

import java.io.FileWriter;  

import java.io.IOException;  

import java.util.Date;  

import org.apache.commons.lang.time.DateFormatUtils;  

import com.Ostermiller.util.CSVPrint;  

import com.Ostermiller.util.CSVPrinter;  

/**  

 *   

 * @author alex.wang  

 * csv文件寫入  

 *  

 */  

public class CsvFilePrinter{     

    private CSVPrint csvPrint;  

    /**  

     *   

     * @param fileName 文件路徑  

     * @param append 是否支持追加  

     * @throws IOException  

     */  

    public CsvFilePrinter(String fileName,boolean append) throws IOException {   

        File file = new File(fileName);  

        if(!file.exists()){  

    csvPrint = new CSVPrinter(new FileWriter(fileName,append));  

            init();  

        }else{  

            csvPrint = new CSVPrinter(new FileWriter(fileName,append));  

            if(!append){  

                init();  

            }  

        }  

    }  

    public void init() throws IOException{  

        write(new String[]{"id","mac","val","date"});  

    }  

    public void write(String[] values) throws IOException {    

        csvPrint.writeln(values);  

    }     

    public static void main(String[] args) throws Exception {     

        String csvFile = "demo".concat("-").concat(DateFormatUtils.format(new Date(), "yyyyMMdd")).concat(".csv");  

        CsvFilePrinter print = new CsvFilePrinter(csvFile,false);  

        for(int i=0;i<10;i++){  

            print.write(new String[]{"50001"+i,"C914"+i,Integer.toString(-80+i),DateFormatUtils.format(new Date(), "yyyy-MM-dd")});  

        }  

    }     

}  

 

3、Csv文件解析類代碼

import java.io.File;  

import java.io.FileInputStream;  

import java.io.IOException;  

import java.io.InputStream;  

import com.Ostermiller.util.ExcelCSVParser;  

import com.Ostermiller.util.LabeledCSVParser;  

/**  

 *   

 * @author alex.wang  

 * csv文件解析器  

 *  

 */  

public class CsvFileParser{     

    private LabeledCSVParser csvParser;//csv解析器,對於第一行的表頭信息,自動加載為索引關鍵字     

    private int currLineNum = -1;//文件所讀到行數     

    private String[] currLine = null;//用來存放當前行的數據    

    /*   

     *  構造函數,   

     *  Param: in InputStream 要解析的信息流   

     *  throws IOException   

     */      

    public CsvFileParser(InputStream in) throws IOException {    

            csvParser = new LabeledCSVParser(new ExcelCSVParser(in));    

            currLineNum = csvParser.getLastLineNumber();    

    }  

    public CsvFileParser(String fileName) throws IOException {   

        InputStream in = new FileInputStream(fileName);  

        csvParser = new LabeledCSVParser(new ExcelCSVParser(in));    

        currLineNum = csvParser.getLastLineNumber();   

    }  

    /*   

     * 檢查是否還有數據   

     *   

     * return ture 還有一行數據,false 沒有數據   

     */    

    public boolean hasMore() throws IOException {    

        currLine = csvParser.getLine();    

        currLineNum = csvParser.getLastLineNumber();    

        if (null == currLine)    

            return false;    

        return true;    

    }     

    /*   

     * 返回當前行數據,關鍵字所指向的數據   

     * param:String filedName 該行的表頭   

     * return:String 返回當前行數據,關鍵字所指向的數據   

     */    

    public String getByFieldName(String fieldName) {    

        return csvParser.getValueByLabel(fieldName);    

    }     

    /*   

     * 關閉解析器   

     *   

     *    

     */    

    public void close() throws IOException {    

        csvParser.close();     

    }     

    /*   

     * 讀取當前行數據   

     *   

     *  return String[] 讀取當前行數據   

     */    

    public String[] readLine() throws IOException {    

        currLine = csvParser.getLine();     

        currLineNum = csvParser.getLastLineNumber();     

        return currLine;    

    }     

   public int getCurrLineNum(){     

         return currLineNum;     

   }      

    public static void main(String[] args) throws Exception {     

         //創建解析信息流    

        InputStream in=new FileInputStream(new File("demo.csv"));     

       //實例解析器CsvFileParser     

        CsvFileParser parser=new CsvFileParser(in);     

       //讀取數據    

        while(parser.hasMore()){    

            System.out.print(parser.getByFieldName("time")+" ");//time 系表頭數據    

            System.out.print(parser.getByFieldName("total")+" ");    

        }    

        parser.close();    

    }     

}  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM