ICode9

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

BufferedInputStream字节缓冲输入流,缓冲流的效率测试_复制文件

2022-07-13 12:04:33  阅读:136  来源: 互联网

标签:字节 BufferedInputStream 缓冲 len read 读取


BufferedInputStream字节缓冲输入流:

java.io.BufferedInputstream extends Inputstream

BufferedinputStream:字书缓冲输入流

继承自父类的成员方法:

int read()从输入流中读取数据的下一个字节。

int read(byte[ ] b)从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。

void close()关闭此输入流并释放与该流关联的所有系统资源。

 

构造方法:

BufferedInputStream(InputStreom in)创建一个BufferedInputStream并保存其参数,即瑜入流 in,以便将来使用。

BufferedInputStream(InputStream in,int size)创建具有指定缓冲区大小的 BufferedInputStreom并保存其参数,即输入流

参数:

InputStream in :字节输入流

我们可以传递FiLeInputstream ,缓冲流会给FiLeInputStreaom增加一个缓冲区,提高FiLeInputStreom的读取效率

int size:指定缓冲流内部缓冲区的大小,不指定默认

 

使用步骤(重点):

1.创建FileInputstream对象,构造方法中绑定要读取的数据源

2.创建BufferedInputStream对象,构造方法中传递FiLeInputStream对象,提高FiLeInputStream对象的读取效率

3.使用BufferedInputStream对象中的方法read,读取文件

4 .释放资源

public class huanchong {
    public static void main(String[] args) throws IOException {
        //1.创建FiLeInputStream对象,构造方法中绑定要读取的数据源
        FileInputStream stream = new FileInputStream("");
        //2.创建BufferedInputStream对象,构造方法中传递FiLeInputStream对象,提高FiLeInputStream对象的读取效率
        BufferedInputStream stream1 = new BufferedInputStream(stream);
        //3.使用Bufferedinputstream对象中的方法read,读取文件
        //int read()从输入流中读取数据的下一个字节。
        /**
         * int len = 0;//记录每次读取到的字节
         * whiLe( ( Len = bis.read( ) )!=-1){
         * system.out.println(Len);
         * }
         */

        //int read(byte[] b)从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中
        byte[] bytes = new byte[1024];//存储每次读取的数据
        int len = 0; //记录每次读取的有效字节个数
        while ((len = stream1.read(bytes)) !=-1){
            System.out.println(new String(bytes,0,len));
        }

        //释放资源
        stream1.close();
    }
}

 

 

 

 

 

 

缓冲流的效率测试_复制文件:

明确:

数据源:c:\\1.jpg

数据的目的地:d :\\1.jpg

文件复制的步骤:

1.创建字节缓冲输入流对象,构造方法中传递字节输入流

2.创建字节缓冲输出流对象,构造方法中传递字节输出流

3.使用字节缓冲输入流对象中的方法read,读取文件

4.使用字节缓冲输出流中的方法write,把读取的数据写入到内部缓冲区中

5.释放资源(会先把缓冲区中的数据,刷新到文件中)

 

文件的大小:780,831字节

一次读写一个字节:32毫秒

使用数组缓冲读取多个字书,写入多个字节:5毫秒

public class xiaolv {
    public static void main(String[] args) throws IOException {
        long s = System.currentTimeMillis();
        //1.创建字节缓冲输入流对象,构造方法中传递字节输入流
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("E:\\thr\\222.txt"));
        //2.创建字节缓冲输出流对象,构造方法中传递字节输出流    如果有同名文件会覆盖掉他然后什么内容都没有
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("E:\\zhj\\222.txt"));
        //3.使用字节缓冲输入流对象中的方法read,读取文件
        //一次读取一个字节写入一个字节的方式
        /*int len = 0;
        while((len = bis.read())!=-1){
            bos.write(len);
        }*/

        //使用数组缓冲读取多个字节,写入多个字节
        byte[] bytes = new byte[1024];
        int len = 0;
        while((len = bis.read(bytes))!=-1){
            System.out.println(new String(bytes,0,len));
            bos.write(bytes,0,len);
        }

        bos.close();
        bis.close();

        long e = System.currentTimeMillis();
        System.out.println("复制文件共耗时:"+(e-s)+"毫秒");
    }
}

 

搜索

复制

标签:字节,BufferedInputStream,缓冲,len,read,读取
来源: https://www.cnblogs.com/hungui/p/16473321.html

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

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

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

ICode9版权所有