java csv 追加_java读、写、追加CSV

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

commons-lang

commons-lang

2.5

org.ostermiller

utils

1.07.00

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")});

}

}

}

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();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值