ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

I/O流之缓存流效率测试

2022-02-11 10:35:26  阅读:168  来源: 互联网

标签:缓存 fw FileReader 流之 FileWriter 测试 new close import


本文在于测试使用缓存流是否可以提高流的读写效率
使用的计时工具是由Hutool提供的TimeInterval
测试内容是复制文件,文件大小为6499kb
实验组:
1、使用FileReader文件字符输入流读取文件内容,再使用FileWriter文件字符输出流写入,一个一个字节读取。
2、使用FileReader文件字符输入流读取文件内容,再使用FileWriter文件字符输出流写入,一个一个字节数组读取。
3、使用BufferReader字符缓冲流包装FileReader读取,使用BufferWriter字符缓冲流包装FileWriter写入,一个一个字节读取。
4、使用BufferReader字符缓冲流包装FileReader读取,使用BufferWriter字符缓冲流包装FileWriter写入,一个一个字节数组读取。
组一:
代码:

点击查看代码
package kaifa.kingdee;


import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.TimeInterval;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Test2 {

    public static void main(String[] args) throws IOException {
        TimeInterval timer = DateUtil.timer();

        FileReader fr = new FileReader("D:\\TestOne.java");
        FileWriter fw = new FileWriter("D:\\Test.txt");
        int len = 0;
        while((len = fr.read()) != -1){
            fw.write(len);
        }
        //由于调用了底层资源,所以需要close(资源是在硬盘中)
        fw.flush();
        fr.close();
        fw.close();

        System.out.println("花费了"+timer.interval()+"ms");
    }
}

结果: ![image](https://www.icode9.com/i/l/?n=22&i=blog/2451771/202202/2451771-20220211100958949-45669592.png) 组二: 代码:
点击查看代码
package kaifa.kingdee;


import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.TimeInterval;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Test2 {

    public static void main(String[] args) throws IOException {
        TimeInterval timer = DateUtil.timer();

        FileReader fr = new FileReader("D:\\TestOne.java");
        FileWriter fw = new FileWriter("D:\\Test.txt");
        char[] a = new char[1024];
        int len = 0;
        while((len = fr.read(a)) != -1){
            fw.write(a);
        }
        //由于调用了底层资源,所以需要close(资源是在硬盘中)
        fw.flush();
        fr.close();
        fw.close();

        System.out.println("花费了"+timer.interval()+"ms");
    }
}
结果:![image](https://www.icode9.com/i/l/?n=22&i=blog/2451771/202202/2451771-20220211101221596-918989386.png) 使用字符数组后,花费时间明显减少。 组三: 代码:
点击查看代码
package kaifa.kingdee;


import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.TimeInterval;

import java.io.*;

public class Test2 {

    public static void main(String[] args) throws IOException {
        TimeInterval timer = DateUtil.timer();

        FileReader fr = new FileReader("D:\\TestOne.java");
        BufferedReader br = new BufferedReader(fr);
        FileWriter fw = new FileWriter("D:\\Test.txt");
        BufferedWriter bw = new BufferedWriter(fw);
        int len = 0;
        while(( len = br.read() ) != -1){
            bw.write(len);
        }
        //由于调用了底层资源,所以需要close(资源是在硬盘中)
        fw.flush();
        fr.close();
        fw.close();
        System.out.println("花费了"+timer.interval()+"ms");
    }
}

结果: ![image](https://www.icode9.com/i/l/?n=22&i=blog/2451771/202202/2451771-20220211101756977-23710474.png) 和组一形成对照,同样是一个字符一个字符的读取,时间明显减少。 组四: 代码:
点击查看代码
package kaifa.kingdee;


import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.TimeInterval;

import java.io.*;

public class Test2 {

    public static void main(String[] args) throws IOException {
        TimeInterval timer = DateUtil.timer();

        FileReader fr = new FileReader("D:\\TestOne.java");
        BufferedReader br = new BufferedReader(fr);
        FileWriter fw = new FileWriter("D:\\Test.txt");
        BufferedWriter bw = new BufferedWriter(fw);
        char[] a = new char[1024];
        int len = 0;
        while(( len = br.read(a) ) != -1){
            bw.write(a);
        }
        //由于调用了底层资源,所以需要close(资源是在硬盘中)
        fw.flush();
        fr.close();
        fw.close();
        System.out.println("花费了"+timer.interval()+"ms");
    }
}

结果: ![image](https://www.icode9.com/i/l/?n=22&i=blog/2451771/202202/2451771-20220211102050026-1468723444.png) 时间花费最少 测试结果都有误差,误差范围在50ms内。

标签:缓存,fw,FileReader,流之,FileWriter,测试,new,close,import
来源: https://www.cnblogs.com/RainASnow/p/15882128.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有