java读取CSV文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java读取CSV文件相关的知识,希望对你有一定的参考价值。

csv文件中带有双引号的字段。如"20091","sff","wqeq"字段,怎样读到数据库里面成为2009 sff wqeq三子段的值,现在我没有办法去掉那个引号。请教高手指点一下。

这是我写的个类 你参考下 其实那个引号是不用管的
public class CsvUtil1
private String filename = null;

private BufferedReader bufferedreader = null;

private List list = new ArrayList();

public CsvUtil1()



public CsvUtil1(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 test() throws IOException
CsvUtil1 cu = new CsvUtil1("D:/学习/00dw.csv");
List tt = cu.getList();
for (Iterator itt = tt.iterator(); itt.hasNext();)
System.out.println(itt.next().toString()+"||");

// System.out.println(cu.getRowNum());
// System.out.println(cu.getColNum());
// System.out.println(cu.getRow(0));
// System.out.println(cu.getCol(0));
// System.out.println(cu.getString(0, 0));
cu.CsvClose();



public void createCsvTest1(HttpServletResponse Response) throws IOException
CsvUtil1 cu = new CsvUtil1("D:/学习/00dw.csv");
List tt = cu.getList();
String data = "";

SimpleDateFormat dataFormat = new SimpleDateFormat("yyyyMMddHHmm");
Date today = new Date();
String dateToday = dataFormat.format(today);
File file=new File("D:/学习/001dw.csv");
if(!file.exists())
file.createNewFile();
// else
// file.delete() ;
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
CsvUtil1 test = new CsvUtil1();
//test.test();
HttpServletResponse response = null ;
test.createCsvTest1(response);

参考技术A 可以通过流的形式读取到所有内容,之后在转换成元素的形式进行实现。举例:
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.*;

public class Test
public static void main(String[] args)
Hashtable<String, String[]> dict = new Hashtable<String, String[]>();
try
BufferedReader reader = new BufferedReader(new FileReader("test.csv"));
String line = null;
while((line=reader.readLine())!=null)
String item[] = line.split(",");
String item2[] = new String[19];
System.arraycopy(item,1,item2,0,19);
dict.put(item[0],item2);

Enumeration e2 = dict.keys();
while (e2.hasMoreElements())
String key = (String) e2.nextElement();
System.out.println(key);
String[] dd = (String[])dict.get(key);
for (int i=0;i<dd.length;i++)
System.out.print(dd[i]+"\t");

System.out.println();


catch (Exception e)
e.printStackTrace();


参考技术B 那你可以自己处理吧,比如判断是否存在双引号,如果存在的话,通过subString()方法,对字符串进行截取吧。

java 读取csv发送 foxmail

参考技术A CSV(CommaSeparatedValue),Foxmail和Outlook导出的地址本都可以是csv文件。CsvJdbc提供了Java访问csv文件的的JDBC驱动,它其实是把一个csv文件当做一个数据库表来操作,提供简单的查询。在发送foxmail的时候比较方便而已。

以上是关于java读取CSV文件的主要内容,如果未能解决你的问题,请参考以下文章

java怎么读写创建csv文件

java处理csv文件

java 对CSV 文件的读取与生成

java读取CSV文件

在java中读取csv文件并写入新文件

jmeter能不能随机读取csv文件中的参数?