ICode9

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

字节缓冲输出流和字节缓冲输入流以及缓冲流的测试

2022-07-18 09:36:38  阅读:138  来源: 互联网

标签:字节 构造方法 对象 缓冲 BufferedInputStream 测试 缓冲区


BufferedOutputStream—字节缓冲输出流

java.io.BufferedOutputStream extends OutputStream

继承自父类的共性方法:

  public void close() :关闭此输出流并释放与此流相关联的任何系统资源。

  public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。

  public void write(byte[] b ) :将b.length字节从指定的字节数组写入此输出流。

  public void write(byte[] b,int off,int len) :从指定的字节数组写入len字节,从偏移量off开始输出到此输出流。

  public abstract void write(int b) :将指定的字节输出流。

构造方法:  

  BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流,以将数据写入指定的底层输出流。

  BufferedOutputStream(OutputStream out, int size)创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流

参数:

  OutputStream out:字节输出流
    我们可以传递FileOutputStream,缓冲流会给FileOutputStream增加一个缓冲区,提高FileOutputStream的写入效率

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

使用步骤:

1.创建FileOutputStream对象,构造方法中绑定要输出的目的地

2.创建BufferedOutputStream对象,构造方法中传递FileOutputStream对象,提高FileOutputStream对象效率

3.使用BufferedOutputStream对象中的方法write,把数据写入到内部缓冲区中

4.使用BufferedOutputStream对象中的方法flush,把内部缓冲区中的数据,刷新到文件中

5.释放资源(会先调用flush方法刷新数据,第4步可以省略)

    public static void main(String[] args) throws IOException {
        //1.创建FileOutputStream对象,构造方法中绑定要输出的目的地
        FileOutputStream fos = new FileOutputStream("a.txt");
        //2.创建BufferedOutputStream对象,构造方法中传递FileOutputStream对象,提高FileOutputStream对象效率
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        //3.使用BufferedOutputStream对象中的方法write,把数据写入到内部缓冲区中
        bos.write("通过缓冲区写入".getBytes());
        //4.使用BufferedOutputStream对象中的方法flush,把内部缓冲区中的数据,刷新到文件中
//        bos.flush();
        //5.释放资源(会先调用flush方法刷新数据,第4步可以省略)
        bos.close();
    }

文件中的内容:

 

 

 

 

 

 

 

 

BufferedInputStream—字节缓冲输入流

java.io.BufferedInputStream extends InputStream

继承自父类的成员方法:

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

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

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

构造方法

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

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

参数:

  InputStream in :字节输入流
    我们可以传递FileInputStream,缓冲流会给FileInputStream增加一个缓冲区,提高FileInputStream的读取效率

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

使用步骤:

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

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

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

  4.释放资源

    public static void main(String[] args) throws IOException {
        //1.创建FileInputStream对象,构造方法中绑定要读取的数据源
        FileInputStream fis = new FileInputStream("a.txt");
        //2.创建BufferedInputStream对象,构造方法中传递FileInputStream对象,提高FileInputStream对象的读取效率
        BufferedInputStream bis = new BufferedInputStream(fis);
        //3.使用BufferedInputStream对象中的方法read,读取文件
//        int i;
//        while ((i=bis.read())!=-1){
//            System.out.println(i);
//        }
        //int read(byte[] b)从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。
        byte[] bytes = new byte[1024];
        int i;
        while ((i=bis.read(bytes))!=-1){
            System.out.println(new String(bytes,0,i));
        }
        //4.释放资源
        bis.close();
    }

打印结果:

 

 

 

 

 

 

 

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

文件复制练习:一读一写

文件复制的步骤:

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

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

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

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

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

    public static void main(String[] args) throws IOException {
        long s = System.currentTimeMillis();
        //1、创建字节缓冲输入流对象,构造方法中传递字节输入流
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("G:\\111.png"));
        //2、创建字节缓冲输出流对象,构造方法中传递字节输出流
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("test.png"));
        //3、使用字节缓冲输入流对象中的方法read,读取文件
//        int i;
//        while ((i=bis.read())!=-1){
//            //4、使用字节缓冲输出流对象中的方法write,把读取的数据写入到内部缓冲区中
//            bos.write(i);
//        }
        byte[] bytes = new byte[1024];
        int i;
        while ((i=bis.read(bytes))!=-1){
            //4、使用字节缓冲输出流对象中的方法write,把读取的数据写入到内部缓冲区中
            bos.write(bytes,0,1);
        }
        //5、释放资源(会先把缓冲区中的数据,刷新到文件中)
        bis.close();
        bos.close();

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

耗时:

 

标签:字节,构造方法,对象,缓冲,BufferedInputStream,测试,缓冲区
来源: https://www.cnblogs.com/xjw12345/p/16489243.html

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

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

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

ICode9版权所有