我们迄今为止看到的大多数示例都使用无缓冲的I / O。这意味着每个读或写请求都由底层操作系统直接处理。这使程序效率变得很低,因为每个这样的请求经常触发磁盘访问,网络活动或一些相对昂贵的其他操作。

为了减少这种开销,Java平台实现了缓冲的I / O流。缓冲输入流从称为缓冲区的存储区读取数据;仅当缓冲区为空时才调用本地输入API。类似地,缓冲输出流将数据写入缓冲区,仅当缓冲区已满时才调用本地输出API。 程序可以使用我们已经使用过多次的包装习惯将无缓冲流转换为缓冲流,其中将无缓冲流对象传递给缓冲流类的构造函数。以下是如何使用缓冲I / O的构造函数修改CopyCharacters的示例:

inputStream = new BufferedReader(new FileReader("xanadu.txt"));
outputStream = new BufferedWriter(new FileWriter("characteroutput.txt"));

有四个缓冲流类用于包装无缓冲流:BufferedInputStream和BufferedOutputStream创建缓冲字节流,而BufferedReader和BufferedWriter创建缓冲字符流。

在关键点写出缓冲区通常是有意义的,而无需等待填充,这被称为冲洗缓冲区。

一些缓冲输出类支持自动刷新,由可选的构造函数参数指定。启用自动清洗时,某些关键事件会导致缓冲区被刷新。例如,一个自动刷新的PrintWriter对象在每次调用println或格式时刷新缓冲区。有关这些方法的更多信息,请参阅格式。 要手动刷新流,请调用其flush方法。 flush方法对任何输出流都有效,但是除非流被缓冲,否则不起作用。

转载于:https://www.cnblogs.com/hhx626/p/8320412.html

IO Streams:缓冲流相关推荐

  1. java学习笔记30(IO :缓冲流)

    缓冲流: 读取数据大量的文件时,读取的速度慢,java提供了一套缓冲流,提高IO流的效率: 缓冲流分为字节缓冲流和字符缓冲流: 字节输入缓冲流和字节输出缓冲流如下: package com.zs.De ...

  2. IO字节缓冲流的最简单读写源码

    import java.io.*;public class mode4 {public static void main(String[] args) throws IOException {//利用 ...

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

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

  4. JavaSE进阶26 - IO流概述、字节流、字符流、转换流、缓冲流

    目录 IO概述 FileInputStream的使用 FileOutputStream使用 文件复制 文件的复制原理 代码 FileReader FileWriter 复制普通文本文件 Buffere ...

  5. Java缓冲流BufferedStream详解

    前言 适合人群:不用啥特别基础的小白 本文的写作目的在于我发现身边很多人对于缓冲流可能有误区,知道得不够全面,一般会有如下几个观点: 1.缓冲流是用于包装其他流,达到缓冲加速的目的,性能要比普通流要好 ...

  6. java byte char io流_吃透Java IO:字节流、字符流、缓冲流

    前言有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身, ...

  7. java io流过滤流_JAVA io流 文件流 字节流 字符流 过滤流 缓冲流

    一.概念 1.1.按流向分类: 输入流: 程序可以从中读取数据的流. 输出流: 程序能向其中写入数据的流. 1.2.按数据传输单位分类: 字节流:以字节(8位二进制)为单位进行处理.主要用于读写诸如图 ...

  8. JavaSE(字符流、IO资源的处理、属性集、ResourceBundle工具类、缓冲流、转换流、序列化、打印流、装饰设计模式、commons-io工具包)

    JavaSE 字符流 字符输入流[Reader] 字符输入流Reader类的概述 字符输入流Reader类的常用方法 FileReader类 FileReader类的概述 FileReader类的构造 ...

  9. 【Java基础】吃透Java IO:字节流、字符流、缓冲流

    文章目录 [Java基础-3]吃透Java IO:字节流.字符流.缓冲流 一.初识java IO 1.1 IO流分类 1.1.1 输入流与输出流 1.1.2 字节流与字符流 1.1.3 节点流和处理流 ...

最新文章

  1. 媳妇居然在家偷偷背着我偷看我的面试笔记,一个月后拿下大厂offer!(文末送书)...
  2. Struts2 常量配置
  3. Windows 中进程的相关操作
  4. Linux 交换文件已存在解决办法
  5. 当您尝试从大于 5000 的 TCP 端口连接时您会收到错误
  6. P1850-换教室【数学期望,dp,Floyd】
  7. 如何利用redis实现秒杀系统
  8. python嵌入shell代码_大家一起学python-Python基础1
  9. python对数组分类_有效地从字典Python中对数组进行分类
  10. 单线程为什么cpu慢_面试时说Redis是单线程的,被喷惨了!
  11. 净空法师质疑,人的生命真的变长了吗
  12. Atitit java wav 压缩 mp3功能总结 目录 1.1. Lame mp3编码器 1 1.2. 使用时发现错误,不支持Unsupported number of channels: 4
  13. c语言 调用md5sum,使用MD5SUM检查文件
  14. 关于json压缩(原始几十个MB大小)传输到安卓性能测试
  15. KPI与360度考核结合的应用落地方案
  16. PS2接口协议及代码分析
  17. python房价预测_您的选房系统已上线——利用python和R如何进行房价预测
  18. 什么是安时数(AH)
  19. ECharts · Doc
  20. MSP430驱动DDS模块AD9851

热门文章

  1. 怎么改变光标Cursor(5种方法)
  2. JDBC基础知识复习
  3. 【多网段切换导致DNS域名解析失败问题处理】
  4. 【c语言 gcc9.1.0环境下编译报错】error: ‘true’ undeclared (first use in this function)
  5. 【⛸️拒绝手滑,我们都是稳准狠⛸️】C++のmemset函数的小探究
  6. javascript 【小数转百分数 保留两位小数】
  7. ubuntu下docker的安装及更换镜像源
  8. hdu1754(树状数组求最值问题)
  9. 【译】Google's AutoML: Cutting Through the Hype
  10. Hyperledger Fabric 1.0 实战开发系列 第三课 chaincode开发