1. 缓冲流(Buffering)

缓冲流要”套接“在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法。Java提供了四种缓冲流,常用构造方法如下:

  • 缓冲输入流支持其父类的mark和reset方法。
  • BufferedReader提供了readLine方法用于读取一行字符串
  • BufferedWriter提供了newLine用于写入一个行分隔符
  • 对于输出的缓冲流,写出的数据会现在内存中缓存,使用flush方法将会使内存中的数据立刻写出
  • 带有缓冲区的,缓冲区(Buffer)就是内存里面的一小块区域,读写数据时都是先把数据放到这块缓冲区域里面,减少io对硬盘的访问次数,保护我们的硬盘。可以把缓冲区想象成一个小桶,把要读写的数据想象成水,每次读取数据或者是写入数据之前,都是先把数据装到这个桶里面,装满了以后再做处理。这就是所谓的缓冲。先把数据放置到缓冲区上,等到缓冲区满了以后,再一次把缓冲区里面的数据写入到硬盘上或者读取出来,这样可以有效地减少对硬盘的访问次数,有利于保护我们的硬盘。

1.1【缓冲流测试代码:BufferedInputStream】

read.txt

TestBufferStream.java

public class TestBufferStream {public static void main(String[] args) {FileInputStream fis = null;try {// 在FileInputStream节点流的外面套接一层处理流BufferedInputStreamfis = new FileInputStream("E:\\IDEACode\\ketangpai\\file-test\\src\\character1\\resource\\read.txt");int c = 0;for (int i = 0; (c = fis.read()) != -1; i++) {// 注意这里需要强转为字符 否则输出的是字符的ASCII码System.out.print((char) c);}fis.close();} catch (Exception e) {e.printStackTrace();}}
}


1.2【演示:BufferedReader】

TestBufferStream.java

/*使用FileWriter(字符流)向指定文件中写入数据写入数据时以1个字符为单位进行写入*/
public class TestBufferStream {public static void main(String[] args) {try {//在节点流FileWriter的外面再套一层处理流BufferedWriterBufferedWriter bw = new BufferedWriter(new FileWriter("E:\\IDEACode\\ketangpai\\file-test\\src\\character1\\resource\\write.txt"));String s = null;for (int i = 0; i < 100; i++) {/*“Math.random()”将会生成一 系列介于0~1之间的随机数。static String valueOf(double d)这个valueOf()方法的作用就是把 一个double类型的数转换成字符串valueOf()是一个静态方法,所以可以使用“类型.静态方法名”的形式来调用*/s = String.valueOf(Math.random());bw.write(s);//把随机数字符串写入到指定文件中bw.newLine();//调用newLine()方法使得每写入一个随机数就换行显示}bw.flush();//调用flush()方法清空缓冲区//在节点流FileReader的外面再套一层处理流BufferedReaderBufferedReader br = new BufferedReader(new FileReader("E:\\IDEACode\\ketangpai\\file-test\\src\\character1\\resource\\write.txt"));while ((s = br.readLine()) != null) {/*使用BufferedReader处理流里面提供String readLine()方法读取文件中 的数据时是一行一行读取的循环结束的条件就是使用readLine()方法读取数据返回的字符串为空值后则表 示已经读取到文件的末尾了。*/System.out.println(s);}bw.close();br.close();} catch (IOException e) {e.printStackTrace();}}
}


write.txt


1.3 处理流–缓冲流(Buffering)分析:

小结:

程序的输入指的是把从文件读取到的内容存储到为程序分配的内存区域里面去。流,什么是流,流无非就是两根管道,一根向里,一根向外,向里向外都是对于我们自己写的程序来说,流分为各种各样的类型,不同的分类方式又可以分为不同的类型,根据方向来分,分为输入流和输出流,根据读取数据的单位的不同,又可以分为字符流和字节流,除此之外,还可以分为节点流和处理流,节点流就是直接和数据源连接的流,处理流就是包在其它流上面的流,处理流不是直接和数据源连接,而是从数据源读取到数据以后再通过处理流处理一遍。缓冲流也包含了四个类:BufferedInputStream、BufferedOutputStream、BufferedReader和BufferedWriter。流都是成对的,没有流是是不成对的,肯定是一个in,一个out。



Java IO流 处理流--缓冲流(Buffering)相关推荐

  1. Java IO流之【缓冲流和文件流复制文件对比】

    与文件流相比,缓冲流复制文件更快 代码: package Homework;import java.io.BufferedOutputStream; import java.io.File; impo ...

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

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

  3. 25.java中IO流的应用---缓冲流、转换流以及对象流过程(附讲解和练习)

    处理流之一:缓冲流  为了提高数据读写的速度, Java API提供了带缓冲功能的流类,在使用这些流类时,会创建一个内部缓冲区数组,缺省使用8192个字节(8Kb)的缓冲区.  缓冲流要" ...

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

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

  5. java字符流字节流场景_【120期】Java IO:字节流、字符流、缓冲流

    IO流是Java中的一个重要构成部分,也是我们经常打交道的.这篇关于Java IO的博文干货满满,堪称全网前三(请轻喷!) 下面几个问题(问题还会继续补充),如果你能对答如流,那么恭喜你,IO知识掌握 ...

  6. fileoutputstream 字节乱码_吃透Java IO:字节流、字符流、缓冲流

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

  7. IO流 (三) ----- 字符流和字符缓冲流

    相关文章: <IO流 (一) ----- 基本概念和File类> <IO流 (二) ----- 文件流> <IO流 (三) ----- 字符流和字符缓冲流> < ...

  8. 【26天高效学习Java编程】Day22:Java中的属性集-缓冲流-转换流-序列化流详解

    本专栏将从基础开始,循序渐进,由浅入深讲解Java的基本使用,希望大家都能够从中有所收获,也请大家多多支持. 专栏地址:26天高效学习Java编程 相关软件地址:软件地址 所有代码地址:代码地址 如果 ...

  9. Java进阶(十一)缓冲流

    十一.缓冲流 需要学会什么? 缓冲流:之前学习的流都属于基础流,性能不是最好的,缓冲流读写数据的性能更好. 转换流:使用字符流读取中文不会乱码原始是什么?如果读取的文件编码与代码编码不一致怎么办? 序 ...

  10. Java IO 3-字节流与字符流的区别

    java以流的形式操纵IO,又将流分为两种:字节流与字符流,对JavaIO流操作不清楚的可以参考 Java IO 2-字节流与字符流 那字节流与字符流之间又有什么区别呢 区别 字节流用于操作文件数据, ...

最新文章

  1. 余弦距离(Cosine距离)与编辑距离分别是什么?各有什么优势和使用场景?
  2. git同一项目使用多个远程仓库
  3. thinkpad x230评测_全新改变超长续航 ThinkPad X230评测
  4. mysql dml_详解MySQL---DDL语句、DML语句与DCL语句
  5. sqlserver on linux
  6. H.265在QRTC场景的落地运用
  7. java 作业 老师与教员信息 类与对象
  8. 资源配置文件的目录结构以及相应的读取方式
  9. PHP图像处理:3D图纸、缩放、回转、剪下、水印(三)
  10. const char *p;和char * const p的区别
  11. matlab水蒸气焓值计算_暖通干货,巧析焓湿图,焓湿图如何应用?一读就懂不容错过...
  12. 软件开发全过程必备文档下载(@附所有文档)
  13. 云服务器网站不显示图片,解决帝国cms图片显示不出来的问题
  14. 怎样把mp4视频转换成mov格式电影
  15. 微信隐藏的功能和技巧
  16. etcdctl的使用[v3版本]
  17. WinRAR命令行用法
  18. 控制面板有u盘显示,可是计算机不显示u盘符
  19. Tomcat启动报A child container failed during start问题解决
  20. C语言程序的运行与调试过程

热门文章

  1. 石头机器人拖地水量调节_这些魔鬼细节告诉你,石头扫地机器人好用在哪里
  2. php7.1 安装pecl,mac pecl 安装php7.1扩展教程
  3. 在antdesignvue中设置nProgress的zIndex无效——已解决
  4. 高绩效教练收获_沟通—高绩效教练OKR
  5. 小程序 mathjs渲染公式_Enscape(渲染器)中文版分享
  6. acrh17华硕固件_华硕RT-ACRH17路由不死OpBoot
  7. 笔记本接html后无声,外接显示器后没声音怎么回事
  8. 风控模型中PSI指标
  9. 【以太坊开发06】Truffle开发入门
  10. P2320 [HNOI2006]鬼谷子的钱袋