日期:2014-05-20  浏览次数:21039 次

java 读取大文件txt文件速度问题
现在做一个数据导入,在读取txt文本对于大文本读取速度很慢...
public List<BarCode> insertBarCodes(String path) {
InputStreamReader input = new FileReader().FileReader(path);

List<BarCode> list = new ArrayList<BarCode>();
try {
if(input!=null){
BufferedReader bufferedReader = new BufferedReader(input);
if (bufferedReader != null) {
String lineTXT = null;
BarCode barCode = null;

while ((lineTXT = bufferedReader.readLine()) != null) {
if(lineTXT.lastIndexOf("")!=-1){
lineTXT=lineTXT+"1";
};

String[] version = lineTXT.split("\t");
if (version.length == 14 ) {
barCode = new BarCode();
barCode.setAB_ARTICLE_ID(version[0]);
barCode.setAB_BARCODE(version[1]);
barCode.setAB_PACKAGE_TYPE(version[2]);
barCode.setAB_BARCODE_TYPE(version[3]);
barCode.setAB_BARCODE_STATUS(version[4]);
// barCode.setAB_HQ_EFFECTIVE_DATE(version[5]);
barCode.setAB_HQ_EFFECTIVE_DATE("2011-10-11");
barCode.setAB_STORE_EFFECTIVE_DATE("2011-10-11");
// barCode.setAB_STORE_EFFECTIVE_DATE(version[6]);
barCode.setAB_CREATE_USER_ID(version[7]);
barCode.setAB_CREATE_DATE("2011-10-11");
// barCode.setAB_CREATE_DATE(version[8]);
barCode.setAB_UPDATE_USER_ID(version[9]);
barCode.setAB_UPDATE_DATE("2011-10-11");
// barCode.setAB_UPDATE_DATE(version[10]);
barCode.setAB_STATUS(version[11]);
barCode.setAB_RSV_STATUS(version[12]);
// barCode.setAB_RSV_DATE(version[13]);
barCode.setAB_RSV_DATE("2011-10-11");
list.add(barCode);
}
}
}
input.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
这是读取的代码片段... 文件小的时候读取很快,对于大文本的话可能就死掉了了..求大侠简答

------解决方案--------------------
用LineNumberReader试试?最主要是你目前出了什么错误?字符串池溢出?
------解决方案--------------------
探讨
没有错误就是速度很慢..50mb的东西可能要几个小时

------解决方案--------------------
我现在也遇到类似的问题,而且我可能需要读取超过100M的txt文件,换个封装流试下吧。