Java实现读取CSV

简介: Java实现读取CSV


/**
  * 读取CSV文件
  *
  * @param file
  * @return
  */
 public static ArrayList<Map<String, String>> readCsv(String file)
 {
  logger.info("file:" + file);
  ArrayList<String[]> list = new ArrayList<String[]>();
  ArrayList<Map<String, String>> listMap = new ArrayList<Map<String, String>>();
  Map<String, String> map = new HashMap<String, String>();
  CsvReader reader = null;
  try
  {
   // 初始化CsvReader并指定列分隔符和字符编码
   reader = new CsvReader(file, ',', Charset.forName("GBK"));
   while (reader.readRecord())
   {
    // 读取每行数据以数组形式返回
    String[] str = reader.getValues();
    if (str != null && str.length > 0)
    {
     if (!str.toString().trim().equals(""))
     {
      list.add(str);
     }
    }
   }
   if (list.size() != 0 && list.size() != 1)
   {
    for (int i = 1; i < list.size(); i++)
    {
     map = new HashMap<String, String>();
     for (int j = 0; j < list.get(0).length; j++)
     {
      if (j >= list.get(i).length)
      {
       break;
      }
      map.put(list.get(0)[j], list.get(i)[j]);
     }
     listMap.add(map);
    }
   }
  }
  catch (FileNotFoundException e)
  {
  }
  catch (IOException e)
  {
  }
  finally
  {
   if (reader != null)
   {
    reader.close();
   }
  }
  return listMap;
 }


import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
Mc1081
import org.apache.log4j.Logger;

import com.csvreader.CsvReader;
import com.csvreader.CsvWriter;

/**
 * CSV测试类
 *
 */
public class CSVTest {

 protected static Logger logger = Logger.getLogger(CSVTest.class);

 /**
  * 读取CSV文件
  * @param file
  * @return
  */
 public static List<String[]> readCsv(String file) {
  List<String[]> list = new ArrayList<String[]>();
  CsvReader reader = null;
  try {
   // 初始化CsvReader并指定列分隔符和字符编码
   reader = new CsvReader(file, ',', Charset.forName("GBK"));
   while (reader.readRecord()) {
    // 读取每行数据以数组形式返回
    String[] str = reader.getValues();
    if (str != null && str.length > 0) {
     if (str[0] != null && !"".equals(str[0].trim())) {
      System.out.println(str.length);
      System.out.println(str[1]);
      list.add(str);
     }
    }
   }
  } catch (FileNotFoundException e) {
   logger.error(e.getMessage(), e);
  } catch (IOException e) {
   logger.error(e.getMessage(), e);
  } finally {
   if (reader != null) {
    reader.close();
   }
  }
  return list;
 }

 /**
  * 写入CSV文件
  */
 public static void writeCsv(List<String[]> content, String path) {
  CsvWriter writer = null;
  try {
   writer = new CsvWriter(path, ',', Charset.forName("GBK"));
   if(content != null && content.size() != 0) {
    for(String[] strArray : content) {
     writer.writeRecord(strArray);
    }
   } else {
    // 做异常处理
   }
  } catch (IOException e) {
   logger.error(e.getMessage(), e);
  } finally {
   if(writer != null) {
    writer.close();
   }
  }
 }

 /**
  * @param args
  * @throws Exception
  */
 public static void main(String[] args) throws Exception {
  String readPath = "F:" + File.separator + "test" + File.separator + "muti-test.csv";
  String writePath = "F:" + File.separator + "test" + File.separator + "muti-test-output.csv";
  List<String[]> result = readCsv(readPath);
  for(String[] strArray : result) {
   for(String s : strArray) {
    System.out.print(s + ",");
   }
   System.out.println();
  }
  writeCsv(result, writePath);
  Thread.sleep(999999);
 }
}

相关文章
java生成CSV文件
java生成CSV文件
116 0
|
3月前
|
存储 Java
|
5月前
|
存储 Java Maven
如何在Java中导入和导出CSV文件
如何在Java中导入和导出CSV文件
287 2
|
5月前
|
存储 Java 测试技术
《手把手教你》系列技巧篇(六十九)-java+ selenium自动化测试 - 读取csv文件(详细教程)
【6月更文挑战第10天】本文介绍了如何在Java中读取CSV文件。首先解释了CSV是逗号分隔值的文本文件,常用于数据交换。接着,在项目实战部分,详细说明了如何通过下载并引入opencsv库来读取CSV文件:包括下载jar包、添加到Eclipse项目、创建CSV文件、编写Java代码读取文件内容,并展示了代码执行后的输出结果。文章以一个简单的代码示例展示了如何使用opencsv读取CSV文件中的数据。
42 0
|
消息中间件 Java Kafka
将CSV的数据发送到kafka(java版)
java版,读取CSV数据发送到kafka
104 1
将CSV的数据发送到kafka(java版)
|
6月前
|
Java
Java CSV文件写入、特殊字符处理等
1、生成CSV文件时要处理双引号、逗号、回车和中文字符
525 1
|
6月前
|
Java
java 读取csv到list,再将list集合数据写入新的csv文件中
java 读取csv到list,再将list集合数据写入新的csv文件中
143 0
|
6月前
|
SQL 数据采集 Java
Java【代码分享 02】商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+获取及解析源代码)包含csv和sql格式数据下载可用
Java【代码分享 02】商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+获取及解析源代码)包含csv和sql格式数据下载可用
77 0
|
6月前
|
Java
Java打开CSV文件到JTable展示
Java打开CSV文件到JTable展示
|
Java
Java 实现汉字按照首字母分组排序
Java 实现汉字按照首字母分组排序
715 0