首页 > 其他分享 >IO流:缓冲流

IO流:缓冲流

时间:2024-08-31 16:23:51浏览次数:12  
标签:字节 缓冲 bis IO close new public

字节缓冲流

简介

缓冲流是对原原始流进行包装,提高原始流读写数据的性能。提供8KB输入输出缓冲区。 

IO流:缓冲流_输入流

IO流:缓冲流_缓冲流_02

用法

IO流:缓冲流_数组_03

public class BufferedInputStreamTest1 {
    public static void main(String[] args) {
        try {
            // 1. 定义一个字节缓冲输入流包裹原始的字节输入流
            InputStream is = new FileInputStream("io-app2/src/itheima01.txt");
            InputStream bis = new BufferedInputStream(is);

            // 2. 定义一个字节缓冲输出流包裹原始的字节输出流
            OutputStream os = new FileOutputStream("io-app2/src/a01_bak.txt");
            OutputStream bos = new BufferedOutputStream(os);

            byte[] buffer = new byte[1024];
            int len;
            while ((len = bis.read(buffer)) != -1) {
                bos.write(buffer, 0, len);
            }

            System.out.println("复制完成!");

            // 关闭流
            bis.close();
            bos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

字符缓冲流

8kB(8192)的字符缓冲池,以字符为单位。

IO流:缓冲流_数组_04

方法readLine,读一行

public class BufferedReaderTest2 {
    public static void main(String[] args) {
        try {
            FileReader fr = new FileReader("io-app2\\src\\itheima01.txt");
            BufferedReader br = new BufferedReader(fr);

            String line; // 记住每次读取的一行数据
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }

            // 关闭流
            br.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

方法newLine,新建一行,也就是换行

原始流、缓冲流的性能分析

使用数组的方法和使用缓冲流来复制文件的效果是差不多的,前提是数组的大小和缓冲桶的大小是一样的。

标签:字节,缓冲,bis,IO,close,new,public
From: https://blog.51cto.com/u_16382144/11883230

相关文章

  • Clion 使用
    1.使用CLion进行ROS开发安装基本的ROS环境ROS环境的安装请参考安装ROS。安装CLion下载CLionLinux的下载地址如下:CLion解压CLion将下载的CLion复制到/opt目录下(你可以解压到适合自己的文件夹,只要保证后续使用的路径一致即可),然后在这个目录下使用终端将其解压,命令如......
  • spark的SparkSubmit类关于Configuration的资源文件加载
    在阅读 SparkSubmit 源代码时,重点关注 Configuration 的资源文件的加载情况,默认通过 newConfiguration() 构造方法创建时,只会加载 core-default.xml 和core-site.xml文件,但是 SparkSubmit 中打印 Configuration 时,发现还会加载 yarn-site.xml,SparkSubmit 代码中没......
  • 2024年8月31日 Python - asycnio
    参考asyncio---异步I/O—Python3.12.4文档asyncio视频教程-bilibili6.2.9. yield表达式—Python3.12.4文档PEP380:委托给子生成器的语法yield介绍yieldx生成一个内容yieldfrom委托给子生成器,yieldfromiterable本质上只是foritemini......
  • python并发与并行(十一) ———— 让asyncio的事件循环保持畅通,以便进一步提升程序的响
    前一篇blog说明了怎样把采用线程所实现的项目逐步迁移到asyncio方案上面。迁移后的run_tasks协程,可以将多份输入文件通过tail_async协程正确地合并成一份输出文件。importasyncio#OnWindows,aProactorEventLoopcan'tbecreatedwithin#threadsbecauseittriestoregi......
  • python并发与并行(十) ———— 结合线程与协程,将代码顺利迁移到asyncio
    在前一篇中,我们用asyncio模块把通过线程来执行阻塞式I/O的TCP服务器迁移到了协程方案上面。当时我们一下子就完成了迁移,而没有分成多个步骤,这对于大型的项目来说,并不常见。如果项目比较大,那通常需要一点一点地迁移,也就是要边改边测,确保迁移过去的这一部分代码的效果跟原来相同。为......
  • python并发与并行(九) ———— 用asyncio改写通过线程实现的IO
    知道了协程的好处之后,我们可能就想把现有项目之中的代码全都改用协程来写,于是有人就担心,这样修改起来,工作量会不会比较大呢?所幸Python已经将异步执行功能很好地集成到语言里面了,所以我们很容易就能把采用线程实现的阻塞式I/O操作转化为采用协程实现的异步I/O操作。在这里我们要补充......
  • STM32GPIO操作底层解析
    我们使用HAL和标准库时,常常忽略他两的底层,只知道怎么用不知其原理,其实是大忌,因为底层丢了代码的灵魂就丢了,对以后的Linux开发不利常用的指令函数:voidGPIO_WriteBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,BitActionBitVal){/*Checktheparameters*/assert_p......
  • 刚刚!Stable Diffusion 4.9更新,Ai绘画最强工具来了!(无需安装,解压即用)
    2024可以称得上是Ai技术大爆发的元年,目前两款Ai神器大火,一款是大名鼎鼎的ChatGPT。另外一款大火的是本期强哥介绍的Ai绘图软件—StableDiffusion。8月StableDiffusionAi绘画最新版本更新啦!此次从4.8.7更新至4.9版本!主要是更新优化和大模型增加,无需复杂的部署,解压即......
  • 保姆级 Stable Diffusion 教程(附整合包),看完这篇就够了!
    2022年8月,在美国科罗拉多州举办了一场新兴数字艺术家竞赛,一幅名为《太空歌剧院》的作品获得“数字艺术/数字修饰照片”类别的一等奖,神奇的是,该作品的作者并没有绘画基础,这幅画是他用AI生成的。这一事件展示了AI在绘画领域惊人的创造力,让人们见识到,AI作品不仅可以......
  • 一次了解所有功能!超详细Stable Diffusion界面大揭秘!(附安装攻略整合包)
    对于AI绘画的初学者而言,一看到SD的UI界面肯定是一脸懵,因为有太多陌生词汇,什么大模型、什么提示词、什么什么采样迭代,和传统的画图方式完全不在一个层面上,学习起来就无从下手~今天老师就给大家详细做一个介绍,一起来学吧~01模型设定菜单栏①StableDiffusion模型:出图的基......