介绍
在很多时候,数据是以CSV文件格式存放的。在提取CSV数据时,我们借助javacsv这个开源工具来处理,还是比较方便。
javacsv in pom.xml of Maven
<dependency>
<groupId>net.sourceforge.javacsv</groupId>
<artifactId>javacsv</artifactId>
<version>2.0</version>
</dependency>
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import util.CommonTool;
import com.csvreader.CsvReader;
/**
* @author shengshu
*
*/
public class CsvCmHandle {
private static final Logger logger = LogManager.getLogger(CsvCmHandle.class);
private static Map<String, Map<String, String>> cmMap = new ConcurrentHashMap<String, Map<String, String>>();
/**
* *
* <p>
* Read CSV file and store records into Map.
*
* @param csvFilePath
* @return
*/
public static Map<String, Map<String, String>> csvCmHandle(String csvFilePath) {
logger.info("CSV File: " + csvFilePath);
Map<String, String> cmRecordMap = null;
String fileName = FilenameUtils.getBaseName(csvFilePath);
try {
CsvReader csvReader = new CsvReader(csvFilePath);
csvReader.readHeaders();
// Get CSV header array
String[] csvHeaderArray = csvReader.getHeaders();
// Ignore the headers when start to read records
while (csvReader.readRecord()) {
String[] csvRecordValueArray = csvReader.getValues();
int csvRecordValueArrayLength = csvRecordValueArray.length;
StringBuilder lineRecordStringBuilder = new StringBuilder();
for (int index = 0; index < csvRecordValueArrayLength; index++) {
lineRecordStringBuilder.append(csvRecordValueArray[index]);
}
// Continue next cycle when it's empty record
if (StringUtils.trimToEmpty(lineRecordStringBuilder.toString()).equals("")) {
break;
}
int csvHeaderArrayLength = csvHeaderArray.length;
cmRecordMap = new ConcurrentHashMap<String, String>();
for (int index = 0; index < csvHeaderArrayLength; index++) {
String fieldName = csvHeaderArray[index];
String fieldValue = StringUtils.trimToEmpty(CommonTool.convertReserveSymbel(csvReader.get(fieldName), false));
logger.info("Field Name = Value: " + fieldName + " = " + fieldValue);
// Put fieldName(Key) and fieldValue(Value) into Map as one record
cmRecordMap.put(fieldName, fieldValue);
}
}
csvReader.close();
// Store entire CSV records into Map(Key: fileName; Value: recordMap)
cmMap.put(fileName, cmRecordMap);
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
}
return cmMap;
}
}
分享到:
相关推荐
csv格式的文件解析器,可以直接而且完整的解析出csv格式的内容 代码可直接运行 里面正则表达式非常完美 有各种实例展示
CSV文件解析jar
ActionScript的CSV文件解析类
CSV文件解析 to html VC6編譯
CSV解析,实现在COCOS2D-X开发中,直接使用UTF8编码的字符串 祝你工作愉快
c++csv文件解析
strings<——>csv 文件解析、转换
使用c++开发的csv文件解析类。 namespace cpp { namespace str { /** 高性能的 csv 解析 */ class csv_parser { public: typedef std::pair, size_t > string_t; typedef std::vector<string_t > fields_t; ...
本人博客文章介绍的CSV文件解析封装类全部源码, 包含测试代码, csv资源文件
轻量级csv文件解析器,支持按照表结构查找,unicode版本
网上主要有两种可用的参考组件, ... 今天介绍第二种方案中的文件上传,文件下载功能则可细...第二种方案中文件上传,其实就是将request对象中的inputStream解析出来,并获取文件的信息流,将文件信息流存储到服务器上。
Java解析CSV文件
一个简单的CSV文件格式读取类。用于开发中,嵌入到你的项目中。直接将两个文件放入你的工程,然后引用头文件即可使用。 有何不明之处,可参考这篇博客 https://blog.csdn.net/learner_/article/details/80893330
Qt应用程序读取获取CSV文件,提取对应行的数据,转存为excel文件。基于SimpleXlsxWriter类和CSVparser类,代码在Scientific.pro中。
VC++6.0编译通过的读写CSV文件的代码及实例 在VC++6.0中编译通过,实测可用 通用性很不错 包含CSV读取的实例
这个包非常好,能处理特殊字符和换行符的问题,自己写的话很容易在特殊字符和换行符上出问题,建议用高人写的jar包。
有限状态机实现。 实现的思考过程参考:http://blog.csdn.net/stevenkylelee/article/details/38309147
解析*_ultraface.csv文件,产生以下文件: 人脸检测框(.txt) 特征点文件(.pts) 姿态角文件(_pos.txt) 性别文件(_sex.txt)
一个非常好用的csv文件操作工具