今天帮同学处理数据, 主要是从1w多条记录中随机获取8k条, 然后再从8k条记录中随机获取2k条记录. 最后将2k条记录中随机分成10组,使得每组的记录都不重复.
下面将我的代码都贴上来, 好以后处理csv文件.
- 首先使用第三方的jar文件 javcsv.jar : 链接: http://pan.baidu.com/s/1qW5b3u0 密码: qjmx
- 虽然该类库可以相对方便提供操作, 但是为了方便处理, 我将处理的字段都放在配置文件中, 然后将每一条记录都封装为Map<String, String>对象,我将读写的基础类封装为 CSVBasic:
View Code
package spt.csv; import java.io.Serializable; import java.nio.charset.Charset; import spt.util.PropertyConfig; /** * CSV文件操作基础类. */ abstract public class CSVBasic implements Serializable { private Charset charset; //编码. private char delimiter; //分隔符. private String fileName; /** * 默认编码. * * @return */ public static Charset getDefaultCharset() { return Charset.forName(PropertyConfig.getProperty("charset")); } /** * 默认分割符. * * @return */ public static char getDefaultDelimiter() { return PropertyConfig.getProperty("delimiter").charAt(0); } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public Charset getCharset() { return charset; } public void setCharset(Charset charset) { this.charset = charset; } public void setDelimiter(char delimiter) { this.delimiter = delimiter; } public char getDelimiter() { return delimiter; } public CSVBasic() {} /**使用默认的分隔符和编码. * @param fileName */ public CSVBasic(String fileName) { this(fileName, getDefaultDelimiter(), getDefaultCharset()); } public CSVBasic(String fileName, char delimiter, Charset charset) { setFileName(fileName); setDelimiter(delimiter); setCharset(charset); } /** * */ private static final long serialVersionUID = 7916808982930771124L; }