Java测试字节流和字符流,以及带缓存的字符流读取速度对比

来源:互联网 发布:linux ftp访问目录 编辑:程序博客网 时间:2024/05/19 14:00

测试用的文件为txt格式文件,大小为2.12MB

package IO;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileReader;    /**     * 我创建了两个方法,     * fileReader()用来测试字节流的读取速度     * fileInputStream()用来测试字符流读取速度     * 测试文件为 0.98G的test.txt文本文件     * @author liqifeng     *     */public class speedTest {    //文件类    static File file;    /**     * 此方法用来测试带缓存的字符流的读取速度     * @param file     * @throws Exception     */    public static void bufferReader(File file) throws Exception{        FileReader fileReader=new FileReader(file);        BufferedReader bufferedReader=new BufferedReader(fileReader);        while(true){            bufferedReader.readLine();            if(bufferedReader.readLine()==null){                break;            }        }    }    /**     * 此方法用来测试字符流的读取速度     * @param file     * @throws Exception     */    public static void  fileReader(File file) throws Exception{        FileReader f=new FileReader(file);        while (true) {            f.read();            if(f.read()==-1){                break;            }        }        f.close();    }    /**     * 此方法用来测试字节流的读取速度     * @param file     * @throws Exception     */    public static void fileInputStream( File file) throws Exception{        FileInputStream f=new FileInputStream(file);        while(true){            f.read();            if(f.read()==-1){                break;            }        }        f.close();    }    public static void main(String[] args) throws Exception {        //初始化文件        file=new File("E:/java/test.txt");        System.out.println("字符流运行速度测试如下(五次)");        for(int i=0;i<5;i++){            //开始的时间戳            long before=System.currentTimeMillis();             //运行程序            fileReader(file);            //结束的时间戳            long after=System.currentTimeMillis();             //总用时            long result=after-before;            System.out.println(result);        }        System.out.println();        System.out.println("字节流运行速度测试如下(五次)");        for(int i=0;i<5;i++){            long before=System.currentTimeMillis();             fileInputStream(file);            long after=System.currentTimeMillis();             long result=after-before;            System.out.println(result);        }        System.out.println();        System.out.println("带缓存的字符流运行速度测试如下(五次)");        for(int i=0;i<5;i++){            long before=System.currentTimeMillis();             bufferReader(file);            long after=System.currentTimeMillis();             long result=after-before;            System.out.println(result);        }    }}

运行结果如下图

这里写图片描述

可以明显看到,此次测试中,字符流读取速度要快于字节流读取速度,带缓存的字符流要快于不带缓存的字符流

原创粉丝点击