处理流:

处理流是对一个已经存在的流的连接和封装,利用的是装饰设计模式,通过所封装后的流进行功能调用实现数据读写,例如BufferedInputStream,处理流的构造器总是需要带一个其他流的对象作为参数。一个流经过其他流的多次包装,称为流的连接,例如FileInputStream的对象经过BufferedInputStream包装后,才使用BufferedInputStream的对象去调用读写数据的方法,那么这个过程就形成了一个流的连接。

读写流程示意:

加解密流程示意:

常用的处理流:

FileInputStream和FileOutputStream是基本的流。

 

缓存流:

BufferedInputStream

BufferedOutputStream

 

基本数据流:

DataInputStream

DataOutputStream

 

对象流:

ObjectInputStream

ObjectOutputStream

 

 

缓存流:

缓存流作为缓冲读写数据使用,它有一个大小为8k的缓存池,加上缓存流的话在读取数据的时候每次就会一次性读取8k,然后读完了再读取8k,输出也是如此,所以能够优化读写上的速度,但是只适合用于单个字节或少量字节的读取或输出上的事情上才有效果。因为如果是批量读取的话,每次读取的字节数量都比较大,就没必要多此一举去使用缓存流了,使用缓存流的话如果不是马上调用close关闭,就需要调用flush方法来清理缓存。

  流程示意:

代码示例:

  这是一个拷贝文件的代码示例,用于对比读取单个字节的情况下,使用缓存流和不使用缓存流的区别,并且对比批量读取下使用缓存流和不使用缓存流的区别:

单个字节读取使用缓存流的方式:

运行结果:

单个字节读取不使用缓存流的方式:

运行结果:

从结果可以看出,缓存流在这种单个字节读取的速度优化上效果是相当好。

批量读取下使用缓存流的方式:

运行结果:

批量读取下不使用缓存流的方式:

运行结果:

从结果可以看出,缓存流在这种批量字节读取的速度优化上效果是相差无几的,甚至有时候加上缓存流反而会变慢,所以在这种批量读取的方式上不需要用缓存流。

转载于:https://blog.51cto.com/zero01/1976622

Buffered缓存流相关推荐

  1. JavaSE——IO(上)(File、字节流、字符流、转换流、打印流、缓存流)

    第3节 IO(上) 一.File类与文件基本操作 在程序中经常需要用到文件的操作,Java有专门的类来进行文件的操作--File类. 1.1 File类概述 它是对文件和目录路径名的抽象表示. 即它本 ...

  2. java缓存流速度与硬盘_系统学习 Java IO (九)----缓冲流 BufferedInputStream/BufferedOutputStream...

    BufferedInputStream BufferedInputStream 类为输入流提供缓冲. 缓冲可以加快IO的速度. BufferedInputStream 不是一次从网络或磁盘读取一个字节 ...

  3. 【java学习笔记-io流 文件读写和键盘读写】带缓存的输入/输出流和数据输入/输出流

    文章目录 字节流类 带缓存的输入/输出流 BufferedReader与BufferedWriter类 下面的例子程序演示了read()方法,从控制台读取字符直到用户键入"q": ...

  4. 2018-08-22字节字符转换流InputStreamReader+OutputStreamWriter+缓冲流Buffered+newLine换行方法...

    OutputStreamWriter类: 查阅OutputStreamWriter的API介绍,OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表(一般是GBK和U ...

  5. Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream

    Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ ...

  6. java IO流面试总结

    1.什么是比特(Bit),什么是字节(Byte),什么是字符(Char),它们长度是多少,各有什么区别 答案 Bit最小的二进制单位 ,是计算机的操作部分 取值0或者1 Byte是计算机操作数据的最小 ...

  7. java中什么方法用来清空流_这个真的写的很细,JavaIO中的常用处理流,看完只有10%的人还不懂了...

    JavaIO中的常用处理流 在前面,我们了解了有关JavaIO流基础的使用,其中对于IO流来说最基础的四大基类就是InputStream.OutputStream.Reader.Writer.而我们对 ...

  8. java当中各种流的应用场景_Java中有哪些流,常用流有哪些并有何特点和使用场景 NIO流,特性及使用时注意的事项 IO与NIO区别...

    IO流 流(stream):一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象,对文件中的内容读和写的操作. 及时关闭不使用的流,避免造成资源流失,可能会导致内存溢出 1.数据流向 输入流 ...

  9. java 中的流_Java中的流(IO

    Java中的流(IO流. java.io包中定义了多个流类型(类或抽象类)来实现 输入 / 输出功能,可以从不同的角度对其进行分类: 按单位可分为: 字节流         (一个字节一个字节的读取) ...

最新文章

  1. linux系统源码安装教程,linux之源码包安装步骤
  2. KVM虚拟机添加虚拟磁盘
  3. 2022.3.28紫薇
  4. 模型存储在哪里_最强的模型工作收纳站「Artty Station」登场!
  5. 现在很多单位有用计算机,为什么到了现在,还有很多的单位在用着xp系统?
  6. 我家闺女35岁了还嫁不出去我该怎么办?
  7. C# winform webbrowser如何指定内核为IE11?
  8. vi/vim替换字符
  9. 【metasploit】1 渗透测试与metasploit基础介绍 [PTES|msf|armitage安装]
  10. 数据库中自然连接与内连接的区别
  11. 【转】python技术博客
  12. react实战笔记172:navigate组件
  13. Windows 10 版本 1507 中的新 AppLocker 功能
  14. CKEditor编辑器的详细使用
  15. 从docker 拉去指定版本的镜像
  16. Re:从零开始的DS学习 十大排序算法我都整理好了
  17. CCNA专业英文词汇全集
  18. 语音情感识别常见的声学特征
  19. java 动态图表_【动态演示】3个套路带你玩转Excel动态图表!
  20. Oracle生成日历表

热门文章

  1. arcsoft panorama maker 6_2021年6月30日入宅新居好吗,农历五月二十一是乔迁吉利日吗——天玄网...
  2. 在虚拟机上安装redis集群,redis使用版本为4.0.5,本机通过命令客户端可以连接访问,外部主机一直访问不了...
  3. HtmlAgilityPack 使用
  4. 关于aop:pointcut的expression配制说明及JoinPoint
  5. PL/SQL Developer下设置“长SQL自己主动换行”
  6. Use Windows Azure AD to create SSO projects
  7. 暑假学习日记2013/7/26
  8. 七周七语言:Scala Day 3
  9. zencart 后台 tool-define page editor define define_main_page.php
  10. SCSF 系列:Smart Client Software Factory 中的 MVP 模式概述