import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import java.util.StringTokenizer;
import com.toptrader.util.FileUtils;
import com.toptrader.util.Property;
/**
* 读、写csv文件
* 解析csv文件内容
* @author zdl
*
*/
public class CsvFile {
private String filename = null;
private BufferedReader bufferedreader = null;
private List<String> list = new ArrayList<String>();
private Properties pro = Property.getProperties(FileUtils.getWetRoot()+"config/config.properties");
public CsvFile() {
}
public CsvFile(String filename) throws IOException {
this.filename = filename;
bufferedreader = new BufferedReader(new FileReader(filename));
String stemp;
while ((stemp = bufferedreader.readLine()) != null) {
list.add(stemp);
}
}
public List getList() throws IOException {
return list;
}
public int getRowNum() {
return list.size();
}
public int getColNum() {
if (!list.toString().equals("[]")) {
if (list.get(0).toString().contains(",")) {
return list.get(0).toString().split(",").length;
} else if (list.get(0).toString().trim().length() != 0) {
return 1;
} else {
return 0;
}
} else {
return 0;
}
}
public String getRow(int index) {
if (this.list.size() != 0)
return (String) list.get(index);
else
return null;
}
public String getCol(int index) {
if (this.getColNum() == 0) {
return null;
}
StringBuffer scol = new StringBuffer();
String temp = null;
int colnum = this.getColNum();
if (colnum > 1) {
for (Iterator it = list.iterator(); it.hasNext();) {
temp = it.next().toString();
scol = scol.append(temp.split(",")[index] + ",");
}
} else {
for (Iterator it = list.iterator(); it.hasNext();) {
temp = it.next().toString();
scol = scol.append(temp + ",");
}
}
String str = new String(scol.toString());
str = str.substring(0, str.length() - 1);
return str;
}
public String getString(int row, int col) {
String temp = null;
int colnum = this.getColNum();
if (colnum > 1) {
temp = list.get(row).toString().split(",")[col];
} else if (colnum == 1) {
temp = list.get(row).toString();
} else {
temp = null;
}
return temp;
}
public void CsvClose() throws IOException {
this.bufferedreader.close();
}
public void ReadCsv() throws IOException {
try {
File csv = new File(pro.getProperty("csvfile_testr")); // CSV文件
BufferedReader br = new BufferedReader(new FileReader(csv));
// 读取直到最后一行
String line = "";
while ((line = br.readLine()) != null) {
int i=0;
// 把一行数据分割成多个字段
StringTokenizer st = new StringTokenizer(line, ",");
while (st.hasMoreTokens()) {
i ++;
// 每一行的多个字段用TAB隔开表示
System.out.print(st.nextToken() + "\t");
}
if(!",,".equals(line.substring(0,2)))
{
System.out.println();
}
}
br.close();
} catch (FileNotFoundException e) {
// 捕获File对象生成时的异常
e.printStackTrace();
} catch (IOException e) {
// 捕获BufferedReader对象关闭时的异常
e.printStackTrace();
}
}
/**
* 写入csv文件
*/
public void WriteCsv() throws IOException {
CsvFile cu = new CsvFile(pro.getProperty("csvfile_testr"));
List tt = cu.getList();
SimpleDateFormat dataFormat = new SimpleDateFormat("yyyyMMddHHmm");
Date today = new Date();
String dateToday = dataFormat.format(today);
File file=new File(pro.getProperty("csvfile_testw"));
if(!file.exists())
file.createNewFile();
String str[];
StringBuilder sb = new StringBuilder("");
BufferedWriter output=new BufferedWriter(new FileWriter(file,true));
//循环文件内容
for (Iterator itt = tt.iterator(); itt.hasNext();) {
String fileStr = itt.next().toString() ;
str = fileStr.split(",");
for(int i=0;i<=str.length-1;i++){ //拆分成数组 用于插入数据库中
System.out.print("str["+i+"]="+str[i]+" ");
}
System.out.println("");
sb.append(fileStr+"\r\n") ;
}
//System.out.println(sb.toString());
output.write(sb.toString());
output.flush() ;
output.close();
cu.CsvClose();
}
public static void main(String[] args) throws IOException {
CsvFile test = new CsvFile();
//test.ReadCsv();
test.WriteCsv();
}
}