一个CSV文件操作类,功能比较齐全:

package tool;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
//参考 http://wenku.baidu.com/view/dfc319c689eb172ded63b7ee.html
public class CsvUtil {
private String fileName=null;
private BufferedReader bufferedReader=null;
private Vector v=new Vector(); public CsvUtil(String filename) throws IOException
{
this.fileName=filename;
bufferedReader=new BufferedReader(new FileReader(fileName));
String stemp;
while((stemp=bufferedReader.readLine())!=null)
{
if(!stemp.startsWith("#"))//以#开头表示注释
v.add(stemp); } }
public Vector getVector()
{
return v;
}
//得到CSV的行数
public int getRowCount()
{
return v.size();
} //取得指定行 public String getRow(int index)
{
if(this.getRowCount()==0)
return null;
return (String)v.get(index);
}
//取得指定列
public String getColumn(int index)
{
if(this.getColumnCount()==0)
{
return null;
}
StringBuffer scol=new StringBuffer();
String temp=null;
int column=this.getColumnCount();
if(column>=1)
{
for(Iterator it=v.iterator();it.hasNext();)
{
temp=it.next().toString();
scol=scol.append(temp.split(",")[index]+","); }
} String str=new String(scol.toString());
str=str.substring(0,str.length()-1);
return str; }
//得到列数
public int getColumnCount()
{
if(!v.toString().equals("[]"))
{
if(v.get(0).toString().contains(","))
{
return v.get(0).toString().split(",").length;
}
else if(v.get(0).toString().trim().length()!=0)
{
return 1;
}
else
{
return 0;
} }
else
{
return 0; } } //取得指定行,指定列的值
public String getValueAt(int row,int col)
{
String temp=null;
int column=this.getColumnCount();
if(column>=1)
{
temp=v.get(row).toString().split(",")[col];
} else
{
temp=null;
}
return temp; } public void insertRow(Vector v) throws IOException
{
//当前的vector增加
// this.v.add错误 BufferedWriter bw=new BufferedWriter(new FileWriter(this.fileName,true));//一定要接true,表示追加
StringBuffer temp=new StringBuffer();
Iterator it=v.iterator();
temp.append(it.next().toString());
if(v.size()>1)
{
while(it.hasNext())
{
temp.append(","+it.next().toString());
}
}
bw.write(temp.toString());
bw.newLine();
bw.flush();
bw.close(); }
public void deleteRow(int index) throws IOException
{
v.remove(index); BufferedWriter bw=new BufferedWriter(new FileWriter(this.fileName));
for(Iterator it=v.iterator();it.hasNext();)
{
bw.write(it.next().toString());
bw.newLine();//一定要有 }
bw.flush();
bw.close(); } public void printAll()
{
Iterator it=v.iterator();
while(it.hasNext())
{
System.out.println(it.next().toString());
}
} public void CsvClose() throws IOException
{
this.bufferedReader.close();
} public static void main(String[] args) throws IOException
{
CsvUtil cu=new CsvUtil("data/user.txt");
/*
String s11=cu.getValueAt(1, 1);
System.out.println(s11);
String arr1=cu.getRowCount(0);
System.out.println(arr1);
System.out.println(cu.getColumn(0));
*/
Vector v=new Vector();
v.add("user5");
v.add("pwd5");
cu.insertRow(v);
//cu.deleteRow(2);
cu.printAll(); }
}

最新文章

  1. Mongodb数据库学习系列————(一)Mongodb数据库主从复制的搭建
  2. Angular遇上CoffeeScript - NgComponent封装
  3. win7计划任务执行php脚本方法
  4. Excel公式学习
  5. Docker-3:Data Volume
  6. C#调用C和C++函数的一点区别
  7. [转]开发者需要了解的WebKit(mark)
  8. 《Linux内核设计与实现》读书笔记(十)- 内核同步方法【转】
  9. cocos2d-x 2.0 序列帧动画 深入分析
  10. 载入在线jQuery库
  11. bzoj1149
  12. Apache RewriteCond RewriteRule 入门和Laravel去掉index.php
  13. 细节!重点!易错点!--面试java基础篇(一)
  14. phing用户手册第四章Getting Started译文
  15. react 基础
  16. 如何在C#中使用存储过程(SQL Server 2000)
  17. Xcode and #pragma mark
  18. docker下安装mysql
  19. web客户端与服务器端二进制传输
  20. Hystrix 学习使用

热门文章

  1. WPF使用Log4net.dll库的demo(转载加个人观点)
  2. 交换机access和trunk的一些小结(转)
  3. 大数据之scala基本语法学习
  4. [MAC Eclipse] Eclipse for MAC 中文乱码的解决办法
  5. Oracle游标
  6. 【原创】JPEG图像密写研究(二) 哈夫曼树的建立
  7. Ubuntu12.04获取root权限
  8. mybatis之动态SQL
  9. 调色板类QPalette——包含了Qt窗口不见的颜色组(collor group),和Windows右键属性外观非常类似
  10. fastDFS同步问题讨论