分别采用三种方式读取大小为74GB共约6亿条记录的文件,BufferedReader 性能最好,RandomAccessFile最差,性能差距超过1百倍
<pre>
public static void scannerReader(String filename){
File f = new File(filename);
if(f.exists() && f.isFile() && f.length()>0){
try {
long times=0;
long startTime = System.currentTimeMillis();
Scanner sc = new Scanner(f);
while(sc.hasNextLine()){
String temp = sc.nextLine();
times++;
}
sc.close();
long endTime = System.currentTimeMillis();
System.out.println("Scanner 执行时间:"+(endTime-startTime) +"当前输出第:"+times+"条数据");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void bufferReader(String filename) throws Exception{
BufferedReader reader = null;
try {
File read= FileUtils.getFile(filename);
reader = new BufferedReader(new FileReader(read.getAbsoluteFile()));
String line = null;
long times=0;
long startTime = System.currentTimeMillis();
while((line = reader.readLine()) != null) {
times++;
}
long endTime = System.currentTimeMillis();
System.out.println("BufferedReader 执行时间:"+(endTime-startTime) +"当前输出第:"+times+"条数据");
} catch (IOException e) {
e.printStackTrace();
}finally {
}
}
public static void ranrReader(String filename)throws Exception{
RandomAccessFile raf = null;
FileChannel fc = null;
try {
raf = new RandomAccessFile(filename, "r");
//raf.seek(0);
fc = raf.getChannel();
ByteBuffer buffer = ByteBuffer.allocate(100000);
int readcount = -1;
long times=0;
long startTime = System.currentTimeMillis();
while ((readcount = fc.read(buffer)) != -1) {
String line = raf.readLine();
times++;
}
long endTime = System.currentTimeMillis();
System.out.println("RandomAccessFile 执行时间:"+(endTime-startTime) +"当前输出第:"+times+"条数据");
} catch (Exception e) {
e.printStackTrace();
}finally {
}
}
</pre>
BufferedReader 执行时间:244007当前输出第:600037902条数据
Scanner 执行时间:2219763当前输出第:600037902条数据
RandomAccessFile 执行时间:35246077当前输出第:600037902条数据
java大文件读取效率对比
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 前言 前不久准备写一个关于文本处理的小程序,需要高效地对文本进行读取。于是就归纳了一下常见的文件读取方法,并测试了...
- 申明一下这个内容是在weex项目中的,地址在这里 Scripts There are several script...
- 一、实战配置: 电脑:联想v480,系统win10,64bit,采用UEFI、GPT分区(如何查看?——打开运行,...