机器学习和生物信息学实验室联盟
标题:
关于快速确定大文件的行数
[打印本页]
作者:
xmubingo
时间:
2012-3-29 16:00
标题:
关于快速确定大文件的行数
本帖最后由 xmubingo 于 2012-3-29 16:02 编辑
一般我们确定行数方法是读一行行:
public static void main(String args[])throws Exception
{
Long startTime = System.currentTimeMillis();
BufferedReader br = new BufferedReader(new FileReader("F:\\hs37p1.EID\\hs37.intrEID"));
double i=0;
while(br.readLine()!=null)
{
i++;
}
br.close();
System.out.println(String.valueOf(i));
Long endTime = System.currentTimeMillis();
System.out.println("Totle time is "+ (endTime - startTime) + " milliseconds");
}
复制代码
网上说有种方法很快:
static public void main(String args[]) {
Long startTime = System.currentTimeMillis();
File test = new File("F:\\hs37p1.EID\\hs37.intrEID");
long fileLength = test.length();
LineNumberReader rf = null;
try {
rf = new LineNumberReader(new FileReader(test));
if (rf != null) {
double lines = 0;
rf.skip(fileLength);
lines = rf.getLineNumber();
rf.close();
System.out.println(String.valueOf(lines));
}
} catch (IOException e) {
if (rf != null) {
try {
rf.close();
} catch (IOException ee) {
}
}
}
Long endTime = System.currentTimeMillis();
System.out.println("Totle time is "+ (endTime - startTime) + " milliseconds");
}
复制代码
对一个1.72GB的文件,确定他们的行数871812行。
第一种方法:19466 milliseconds
第二种方法:18732 milliseconds
没觉得快多少。。。。。。。。
18秒对于webserver来说太可怕 了。
有没有更快的方法?求教育
作者:
zouquan
时间:
2012-3-29 16:07
第二种方法很有意思,感觉更专业。web server毕竟不去用处理1.7G的文件。
但我猜底层实现是一样的,所以两种方法速度差不多。
如果第一种改成
String s=br.readLine();
i++;
估计就会慢不少
作者:
xmubingo
时间:
2012-3-29 21:41
zouquan 发表于 2012-3-29 16:07
第二种方法很有意思,感觉更专业。web server毕竟不去用处理1.7G的文件。
但我猜底层实现是一样的,所以 ...
嗯,我决定采用第二种方法。
欢迎光临 机器学习和生物信息学实验室联盟 (http://123.57.240.48/)
Powered by Discuz! X3.2