文章目录

  • 缓冲流
    • 缓冲流概述
    • 字节缓冲流
    • 字符缓存流

缓冲流

缓冲流概述

缓冲流介绍:

缓冲流也称为高效流、或者高级流。之前学习的字节流和字符流可以称为原始流。

作用:缓冲流自带缓冲区、可以提高原始字节流、字符流读写数据的性能

缓冲流分为: 字节缓存输入流、字节缓冲输出流、字符缓冲输入流、字符缓冲输出流

字节缓冲流

字节缓冲输入流:BufferedInputStream,提高字节输入流读取数据的性能,读写功能上与原始流相比并无变化。

字节缓冲输出流:BufferedOutputStream,提高字节输出流读取数据的性能,读写功能上与原始流相比并无变化。

字节缓冲流性能优化原理:

字节缓冲输入流自带了8KB缓冲池,以后我们直接从缓冲池读取数据,所以性能较好。

字节缓冲输出流自带了8KB缓冲池,数据就直接写入到缓冲池中去,写数据性能极高了。

将原始流包装为缓冲流的构造器如下:

构造器 说明
BufferedInputStream(InputStream is) 可以把低级的字节输入流包装成一个高级的缓冲字节输入流管道,从而提高字节输入流读数据的性能
BufferedOutputStream(OutputStream os) 可以把低级的字节输出流包装成一个高级的缓冲字节输出流,从而提高写数据的性能
public static void main(String[] args) throws Exception {// 创建原始字节输入流InputStream is = new FileInputStream("/Users/chenyq/Documents/test.txt");// 创建原始字节输出流OutputStream os = new FileOutputStream("/Users/chenyq/Documents/test1.txt");// 将低级的字节输入流包装为高级的缓存输入流InputStream bis = new BufferedInputStream(is);// 将低级的字节输出流包装为高级的缓存输出流OutputStream bos = new BufferedOutputStream(os);
}

读写功能和之前原始流的读写并无区别:

public static void main(String[] args) {try (// 创建原始字节输入流InputStream is = new FileInputStream("/Users/chenyq/Documents/test.txt");// 创建原始字节输出流OutputStream os = new FileOutputStream("/Users/chenyq/Documents/test1.txt");// 将低级的字节输入流包装为高级的缓存输入流InputStream bis = new BufferedInputStream(is);// 将低级的字节输出流包装为高级的缓存输出流OutputStream bos = new BufferedOutputStream(os);) {// 文件拷贝: 读写操作byte[] arr = new byte[1024];int len;while ((len = bis.read(arr)) != -1) {bos.write(arr, 0, len);}} catch(Exception e) {e.printStackTrace();}
}

字符缓存流

字符缓存输入流

字符缓冲输入流:实现类BufferedReader。

作用:提高字符输入流读取数据的性能,除此之外多了按照行读取数据的功能。

字符缓存输入流构造器如下:

构造器 说明
BufferedReader(Reader r) 可以把低级的字符输入流包装成一个高级的缓冲字符输入流管道,从而提高字符输入流读数据的性能
public static void main(String[] args) throws Exception {// 创建原始字符输入流Reader r = new FileReader("/Users/chenyq/Documents/test.txt");// 将原始字符输入流包装为字符缓存输入流Reader br = new BufferedReader(r);
}

字符原始输入流的方法字符缓存输入流同样适用:

public static void main(String[] args) {try (// 创建原始字符输入流Reader r = new FileReader("/Users/chenyq/Documents/test.txt");// 将原始字符输入流包装为字符缓存输入流Reader br = new BufferedReader(r);){// 读取文件char[] arr = new char[1024];int len;while ((len = br.read(arr)) != -1) {String res = new String(arr, 0, len);System.out.println(res);}} catch (Exception e) {e.printStackTrace();}
}

字符缓存输入流在原有的方法上新增了方法:

方法 说明
readLine() 读取一行数据, 并返回该行内容的字符串,无行可读返回null

按行读取: 普通方法

public static void main(String[] args) {try (Reader r = new FileReader("/Users/chenyq/Documents/test.txt");BufferedReader br = new BufferedReader(r);){// 读取第一行System.out.println(br.readLine());} catch (Exception e) {e.printStackTrace();}
}

按行读取: 循环方法

public static void main(String[] args) {try (Reader r = new FileReader("/Users/chenyq/Documents/test.txt");BufferedReader br = new BufferedReader(r);){String res;while ((res = br.readLine()) != null) {System.out.println(res);}} catch (Exception e) {e.printStackTrace();}
}

字符缓存输出流:

字符缓冲输出流:实现类BufferedWriter。

作用:提高字符输出流写取数据的性能,除此之外多了换行功能

字符缓存输出流构造器如下:

构造器 说明
BufferedWriter(Writer w) 可以把低级的字符输出流包装成一个高级的缓冲字符输出流管道,从而提高字符输出流写数据的性能
public static void main(String[] args) throws Exception {Writer w = new FileWriter("/Users/chenyq/Documents/test.txt");// 将原始字符输出流包装为缓冲输出流Writer bw = new BufferedWriter(w);
}

字符缓存输出流新增功能:

当然原生输输出流的功能同样可以使用

方法 说明
newLine() 换行操作
public static void main(String[] args) {try (Writer w = new FileWriter("/Users/chenyq/Documents/test.txt", true);BufferedWriter bw = new BufferedWriter(w);){// 定义一个字符数组char[] arr = {'我', '爱', 'C', 'h', 'i', 'n', 'a'};// 定义一个字符串String str = "我爱学习Java";// 写入一个字符bw.write('我');bw.write(98);// 换行bw.newLine();// 写入一个字符数组bw.write(arr);// 换行bw.newLine();// 写入字符数组的一部分bw.write(arr, 1, 3);// 换行bw.newLine();// 写入一个字符串bw.write(str);// 换行bw.newLine();// 写入一个字符串的一部分bw.write(str, 0, 4);// 换行bw.newLine();} catch (IOException e) {throw new RuntimeException(e);}
}

Java IO流 - 缓冲流的详细使用介绍相关推荐

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

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

  2. Java基础知识强化之IO流笔记41:字符流缓冲流之复制文本文件案例02(使用 [ newLine() / readLine() ] )(重要)...

    1. 使用字符流缓冲流的特殊功能 [ newLine() / readLine() ] 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中  数据源: a.txt -- 读取数据 ...

  3. Java IO流 处理流--缓冲流(Buffering)

    1. 缓冲流(Buffering) 缓冲流要"套接"在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法.Java提供了四种缓冲流,常用构造方 ...

  4. Java IO: 其他字符流(下)

    转载自   Java IO: 其他字符流(下) 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本小节会简要概括Java IO中的PushbackRe ...

  5. Java——IO(打印流)

    1,打印字节流(PrintStream)的概述: 打印流可以很方便的将对象的toString()结果输出并且自动加上换行,而且可以使用自动刷出的模式 System.out就是一个PrintStream ...

  6. day27-API-java流的三大分类,常用的流(文件流,对象流, 缓冲流, 转换流, PW)

    文章目录 一. java流的三大类 1. 输出流和输入流 2. 字节流和字符流 3. 节点流和处理流 二. 字节流 1. 文件流 FIS和FOS 1.1 文件输出流:FileOutputStream ...

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

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

  8. Java基础---认识IO流---字节流、字符流---缓冲流---转换流

    一.认识IO流 I/O就是用于设备之间进行数据交互的对象所属的类型 IO流的体系结构:根据分类,有四种流对象类型 字节流:可以直接操作字节信息的流对象 字节输入流:InputStream 字节输出流: ...

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

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

最新文章

  1. 通过yiic来创建yii应用
  2. 3 calender python_python3笔记二十一:时间操作datetime和calendar
  3. linux openssl 反弹加密 shell
  4. hbase delete.deleteColumns问题
  5. 文件上传打满服务器带宽,文件上传云服务器 带宽选择
  6. 深入理解 python 中的赋值、引用、拷贝、作用域
  7. Create Volume 操作(Part I) - 每天5分钟玩转 OpenStack(50)
  8. Javascritp入门
  9. c语言中 dr指令应用,在计算机进行程序存储及控制中,pc.ir.ar和dr各起什么作用?能否相互代替?...
  10. 记一次酷派尚锋Y75刷机
  11. docker 启动mysql_两行命令安装MySQL,Docker就是效率的化身
  12. 中国摊铺和混凝土浇筑设备市场趋势报告、技术动态创新及市场预测
  13. CSS布局讲解-float浮动布局使用
  14. 将python程序打包成exe
  15. c语言程序设计设计题题库,C语言程序设计题库.doc
  16. 推荐几个免费下载破解软件的网站
  17. RMAN备份恢复Oracle_wuli大世界_新浪博客
  18. 澳门上葡京综合度假村冬季献礼迎佳节
  19. PS光影神话完整版下载安装
  20. 转载:整车CAN网络介绍---CAN--PT CAN--Chassis CAN--Body CAN--Info CAN

热门文章

  1. python解析IP地址归属地
  2. c语言 数据结构面试题及答案,数据结构(C语言)【经典题库】含答案
  3. 全都上市了又能怎样?网贷一人功成万骨枯。。。
  4. 使用python的scapy库,提供一个可用的通过nbns获取主机名称的示例代码
  5. php网页生成pdf文件
  6. 【Unreal Engine】UE5 虚幻引擎下载安装教程
  7. Unity A星寻路
  8. MARMOT土拨鼠FRW辐轮王中国儿童自行车十大名牌
  9. 组播发送端接收端,广播发送端接收端
  10. linux开发 stc_在Linux上快速搭建8051开发环境