使用java将csv文件分割

2008-02-23 10:07:57来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

csv即用逗号分割的文件,本类实现的结果与Excel打开csv时基本相同

不同的是Excel对于回车也作为一个项目的内容,而在这里是以行为单位进行分割

aa,bb,cc,dd ----->|aa|bb|cc|dd 即分割为aa,bb,cc,dd四个元素

"aa","bb","cc","dd" ----->|aa|bb|cc|dd

"a""a","a""""b" -------->|a"a|a""b

"a"b","c""d"e",f""e ------->|ab"|c"de"|f""e|

//Generated by fason

package fason;

import Java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Iterator;

public class CSVParse {
public static ArrayList parseCSV(String lineStr){
ArrayList colList = new ArrayList();
StringBuffer sb = new StringBuffer(lineStr);
int colFlg = 0;
boolean comaFlg = false;
StringBuffer colBuf = new StringBuffer();
while(sb.length()>0){
char c = sb.charAt(0);
if(comaFlg == false){
if(c == ','){
colList.add(colBuf.toString());
colBuf = new StringBuffer();
}else if(c == '\"'){
colFlg = 1;
char tmpc = '\0';
if(sb.length()>1){
tmpc = sb.charAt(1);
}
if(tmpc == '\"'){
colFlg = 2;
sb.deleteCharAt(1);
}
comaFlg = true;
}else{
colFlg = 2;
colBuf.append(c);
comaFlg = true;
}
}else{
if(colFlg == 2 && c == ','){
colList.add(colBuf.toString());
colBuf = new StringBuffer();
comaFlg =false;
}else if(colFlg ==1 && c == '\"'){
char tmpc = '\0';
if(sb.length()>1){
tmpc = sb.charAt(1);
}
if(tmpc == '\"'){
colBuf.append(tmpc);
sb.deleteCharAt(1);
}else{
colFlg = 2;
}
}else{
colBuf.append(c);
}
}
sb.deleteCharAt(0);
}
colList.add(colBuf.toString());
return colList;
}
public static ArrayList parseCSVFile(String filePath){
BufferedReader br;
try{
br = new BufferedReader(new FileReader(filePath));
}catch(Exception e){
System.out.print(e.getMessage());
return null;
}
ArrayList lineList = new ArrayList();
try{
String s;
while((s = br.readLine()) != null){
lineList.add(s);
}
}catch(Exception e){
System.out.print(e.getMessage());
}
ArrayList lineColList = new ArrayList();
Iterator ite = lineList.iterator();
while(ite.hasNext()){
String lineStr = (String)ite.next();
lineColList.add(parseCSV(lineStr));
}
return lineColList;
}
}

上一篇: Spring Framework 1.1.5 has just been released
下一篇: servlet彩色验证码

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:oracle数据库java接口类,

下一篇:Eclipse 照亮Java众生