首页 > 其他分享 >缓冲流

缓冲流

时间:2022-12-18 10:22:58浏览次数:41  
标签:fis 字节 fos BufferedInputStream 缓冲 System new

1 概述:也叫高效流,是对4个基本的FileXxx流的增强

2 按数据类型分类

①字节缓冲流BufferedInputStream ..Out
②字符缓冲流BufferedReader ..Writer

3 缓冲流的基本原理:

在创建流对象时会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少IO次数,从而提高读写效率(耗时少)

一 BufferedInputStream

BufferedInputStream extends FileOutputStream extends OutputStream

因此OutputStream 的成员方法 BufferedInputStream 也具有

构造方法:
BufferedInputStream( OutputStream out )
创建一个新的缓冲输出流,将数据写入指定的底层输出流
BufferedInputStream( OutputStream out ,int size)
创建一个新的缓冲输出流,指定缓冲区大小,将数据写入指定的底层输出流

二 BufferedWriter

BufferedWriter extends Writer

特有方法:
void newLine() 写一行 行分隔符(换行)

三 BufferedReader

BufferedReader extends Reader

特有方法:
String readLine() 读一行文字


举例:百度网盘用到了缓冲流

 */
public class Demo5 {
public static void main(String[] args) throws Exception {
    //调用方法
    //noVip();                //124
    //vip();                  //43
    supVip();                 //1

}

//非会员(普通流一次读写一个字节数据)
public static void noVip() throws Exception {
    long start = System.currentTimeMillis();
    FileInputStream fis = new FileInputStream("E:\\IO流之字节流.md");
    FileOutputStream fos = new FileOutputStream("E:\\IO流之字节流(复制1).md");

    int a;
    while ((a = fis.read()) != -1) {
        fos.write(a);
    }

    //释放资源
    fis.close();
    fos.close();

    long end = System.currentTimeMillis();
    System.out.println("非会员拷贝文件耗时:" + (end - start));
}

//普通会员(缓冲流一次读写一个字节数据)
public static void vip() throws Exception {
    long start = System.currentTimeMillis();

    FileInputStream fis = new FileInputStream("E:\\IO流之字节流.md");
    BufferedInputStream bis = new BufferedInputStream(fis);

    FileOutputStream fos = new FileOutputStream("E:\\IO流之字节流(复制2).md");
    BufferedOutputStream bos = new BufferedOutputStream(fos);

    int a;
    while ((a = bis.read()) != -1) {
        bos.write(a);
    }

    //释放资源
    bis.close();
    bos.close();

    long end = System.currentTimeMillis();
    System.out.println("普通会员拷贝文件耗时:" + (end - start));

}

//超级会员(使用缓存流一次读写一个字节数组)
public static void supVip() throws Exception {
    long start = System.currentTimeMillis();

    FileInputStream fis = new FileInputStream("E:\\IO流之字节流.md");
    BufferedInputStream bis = new BufferedInputStream(fis);

    FileOutputStream fos = new FileOutputStream("E:\\IO流之字节流(复制3).md");
    BufferedOutputStream bos = new BufferedOutputStream(fos);

    int a;
    byte[] bytes = new byte[1024];

    while ((a = bis.read(bytes)) != -1) {
        bos.write(bytes, 0, a);
    }

    //释放资源
    bis.close();
    bos.close();

    long end = System.currentTimeMillis();
    System.out.println("超级会员拷贝文件耗时:" + (end - start));
}
}

 

标签:fis,字节,fos,BufferedInputStream,缓冲,System,new
From: https://www.cnblogs.com/Sco-/p/16990047.html

相关文章

  • OS_用户层的IO软件@缓冲区@磁盘高速缓存@异步IO
    文章目录​​PC_OS@磁盘HDD_SSD@存储介质(材料工艺)@性能指标@磁盘调度算法​​​​外存​​​​磁盘存储器​​​​组成​​​​磁盘驱动器​​​​磁盘控制器​​​​盘片......
  • 字符缓冲输入流读数据 1216
    importjava.io.BufferedReader;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.IOException;publicclassTest2{publicstaticvo......
  • 实验七-缓冲区溢出 实验报告
    实验七-缓冲区溢出实验报告实验指导书内容一、准备:输入命令安装一些用于编译32位C程序的软件包二、实验步骤:1、初始设置:(1)关闭地址空间随机化(2)设置zsh程序,关闭......
  • printf的输出缓冲区问题:\n不加就发不出来
    (29条消息)linux下printf函数为什么不加\n就不能输出相关的内容?_zqx20032009的博客-CSDN博客 fflush(stdout);//刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输......
  • 实验七-缓冲区溢出
    实验指导书内容一、实验简介缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。......
  • 实验七-缓冲区溢出
    实验指导书内容一、实验简介缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段......
  • 实验七-缓冲区溢出
    实验七-缓冲区溢出实验指导书内容实验准备安装gdb1sudoapt-getupdate2sudoapt-getinstall-ylib32z1libc6-dev-i386lib32readline6-dev3sudoapt-geti......
  • 缓冲区溢出实验
    一.实验简介(原理)缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的......
  • 实验七-缓冲区溢出
    实验指导书内容一、实验简介缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。......
  • 2022-2023-1 20221020漆心雨《 缓冲区溢出实验》
    缓冲区溢出实验一、实验简介缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意......