使用java将csv文件分割
2008-02-23 10:07:57来源:互联网 阅读 ()
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
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:Eclipse 照亮Java众生
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash