下午接到项目,读取一个csv文件并写入到数据库中,把数据存入数据库中比较简单,可以参考市面上的写法,或者用一个对象,存放读取的数据,批量插入数据库。
但是下午的数据容量较大,据说有2000W条日处理量,而且要求cpu尽量满格。
好吧,又是一个坑爹又艰难的项目。言归正传,来搞一个csv文件的读取。
这里参考了网上的一些写法,进行了整合
方法1:
package csvtest;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class CSVFileUtil {
// CSV文件编码
public static final String ENCODE = "GBK";
private FileInputStream fis = null;
private InputStreamReader isw = null;
private BufferedReader br = null;
public CSVFileUtil(String filename) throws Exception {
fis = new FileInputStream(filename);
isw = new InputStreamReader(fis, ENCODE);
br = new BufferedReader(isw);
}
// ==========以下是公开方法=============================
/**
* 从CSV文件流中读取一个CSV行。
*
* @throws Exception
*/
public String readLine() throws Exception {
StringBuffer readLine = new StringBuffer();
boolean bReadNext = true;
while (bReadNext) {
//
if (readLine.length() > 0) {
readLine.append("\r\n");
}
// 一行
String strReadLine = br.readLine();
// readLine is Null
if (strReadLine == null) {
return null;
}
readLine.append(strReadLine);
// 如果双引号是奇数的时候继续读取。考虑有换行的是情况。
if (countChar(r