您的位置:首页 > 编程语言 > Java开发

java 操作csv文件

2012-02-29 12:33 190 查看
public class CSVUtil {

 

 private LinkedList<LinkedList<String>> m_rowList = new LinkedList<LinkedList<String>>();

 

 private String m_fileName = null;

 

 public CSVUtil(){

  

 }

 

 

 public boolean readCSV(String fileName){

  if(fileName.isEmpty()){

   return false;

  }

  

  try {

   File file = new File(fileName);

   

   InputStreamReader freader = new InputStreamReader(new FileInputStream(file), "UTF-8");

     

   BufferedReader reader = new BufferedReader(freader);

      

   String rowValues = reader.readLine();

   

   while(rowValues != null){

    String[] tokens = rowValues.split(",");

    

    LinkedList<String> row = new LinkedList<String>();

    

    for(String cell:tokens){

     row.addLast(cell);

    }

    

    m_rowList.addLast(row);

    

    rowValues = reader.readLine();

   }

   reader.close();

   

   m_fileName = fileName;

   return true;

  } catch (FileNotFoundException e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

  } catch (IOException e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

  }

  

  return false;

 }

 

 public boolean saveAsCSV(String fileName){

  if(m_rowList.isEmpty() || fileName.isEmpty()){

   return false;

  }

  

  if(fileName.indexOf(".") == -1){

   fileName += ".csv";

  }

  if(!fileName.endsWith(".csv")){

   int endIndex = fileName.indexOf('.');

   fileName = fileName.substring(0, endIndex);

   fileName += ".csv";

  }

  

  try {

   File file = new File(fileName);

   //先检查要存储的文件是否存在,如果存在直接删除

   if(file.exists()){

    file.delete();

   }

   

   OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file),"UTF-8");

   

   StringBuilder sb = new StringBuilder();

   

   for(LinkedList<String> row:m_rowList){

    for(int i=0;i<row.size()-1;i++){

     sb.append(row.get(i));

     sb.append(',');

    }

    sb.append(row.get(row.size()-1));

    sb.append("\r\n");

   }

   

   writer.write(sb.toString());

   writer.close();

   return true;

  } catch (IOException e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

  }

  

  return false;

 }

 

 public String getCell(int row,int colum){

  if(row >= m_rowList.size() || row < 0){

   throw new IndexOutOfBoundsException(String.valueOf(row));

  }else{

   LinkedList<String> rowValues = m_rowList.get(row);

   

   if(colum<0 || colum >= rowValues.size()){

    throw new IndexOutOfBoundsException(String.valueOf(colum));

   }else{

    return rowValues.get(colum);

   }

   

  }

 }

 

 public boolean insertRow(int row,String[] values){

  if(row<0 ||row>m_rowList.size()){

   throw new IndexOutOfBoundsException(String.valueOf(row));

  }

  if(values == null){

   throw new NullPointerException();

  }

  

  LinkedList<String> rowValues = new LinkedList<String>();

  

  for(String cell:values){

   rowValues.addLast(cell);

  }

  

  m_rowList.add(row, rowValues);

  return true;

 }

 

 public boolean insertCell(int row,int colum,String value){

  if(row<0 ||row>m_rowList.size()){

   throw new IndexOutOfBoundsException(String.valueOf(row));

  }

  LinkedList<String> rowValues = m_rowList.get(row);

  if(colum<0 || colum >= rowValues.size()){

   throw new IndexOutOfBoundsException(String.valueOf(colum));

  }

  rowValues.add(colum, value);

  return true;

 }

 

 public boolean save(){

  return saveAsCSV(m_fileName);

 }

 

 public int getMaxRow(){

  return m_rowList.size();

 }

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  csv java string file null class