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文件的主要内容,如果未能解决你的问题,请参考以下文章