使用java将csv文件分割

原创 2005年03月02日 00:14:00

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

相关文章推荐

使用Java操作CSV文件 .

网上找了个开源实现,用用还不错。因为项目中经常要用到,而我又很容易忘记。为了节省今后使用时到网上漫天寻找的时间,我决定在这做个笔记。 CSV读写开源实现主页:http://opencsv.sourc...

Java opencsv--使用 Spring 的 PostConstruct机制,项目启动时,将CSV配置文件读取到内存 map 中

Java opencsv--使用 Spring 的 PostConstruct机制,项目启动时,将CSV配置文件读取到内存 map 中 一.studentConfig.csv 文...

JAVA,导出CSV,设最大行数限制,使用winzipaes压缩成带密码的zip文件

由于工作需要,导出CSV功能,太大的话要分成多个,并且导出文件要压缩成带密码的zip。 JAVA本身的ZIP输入输出流是支持多个文件的,但是没有设置密码功能。 网上搜索了很久,最后选择使用开源的w...

闲谈(一) Java 使用 Excle 和 CSV 文件

Excel 是常用的办公软件之一,,它可以进行各种数据的处理、统计分析和辅助决策操作,广泛地应用于管理、统计财经、金融等众多领域。CSV是最通用的一种文件格式,它可以非常容易地被导入各种PC表格及数据...

从CSV文件中读取数据,使用逗号','分割问题

package Test; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.F...
  • YtdxYHZ
  • YtdxYHZ
  • 2014年10月19日 22:54
  • 8379

从CSV文件中读取数据,使用逗号','分割问题

package Test; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.F...
  • wwd0501
  • wwd0501
  • 2016年11月25日 13:38
  • 1645

java读写csv文件

  • 2013年10月08日 23:31
  • 23KB
  • 下载

java电子考勤系统(读CSV文件)

  • 2010年12月30日 21:06
  • 2KB
  • 下载

在java中使用weka:用java将Excel文件(xlsx,xls)转换为csv文件

有时做数据处理的时候会用到Excel,所以我们可以将Excel文件转换为csv就可以供weka接口使用了。 需要用到的包: weka.jar poi-3.10.1-20140818.jar p...
  • Bryan__
  • Bryan__
  • 2014年11月02日 21:13
  • 3331
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用java将csv文件分割
举报原因:
原因补充:

(最多只允许输入30个字)