在之前的学习笔记(http://blog.csdn.net/megustas_jjc/article/details/72853059)中,FileWriter与FileReader的Demo使用的中转数据buf实际就是缓冲区,是由我们自己创建的。

缓冲区可以提高效率,Java对缓冲区进行了封装,封装成了对象,即读与写操作都进行了缓冲:
BufferedWriter

BufferedReader
缓冲区要结合流才可以使用
在流的基础上对流的功能进行了增强

为什么会提高效率(同数据库连接池,避免每次的创建连接和断开连接,直接创建一个容器,使用完放回即可):

常规的读一次写一次的方式,磁头需要进行不断的切换

缓冲的方式,每次读取一块便在内存中存储一块,一旦装满了或者没有数据可以继续读取了,就开始写操作

代码:设计优化(重构);性能优化(最常见的手段之一就是缓冲区)

public class BufferdeWriter extends Writer:

将文本写入字符输出流,缓冲各个字符,从而提供单个字符、雅思考试时间数组和字符串的高效写入

本质:用数组在缓冲存流中的数据,因此缓冲区在被创建时,必须要有被缓存的对象
BufferedWriter(Writer
out)
:创建一个使用默认大小输出缓冲区的缓冲字符输出流
BufferedWriter(Writer out,int
sz)
:创建一个使用给定大小输出缓冲区的缓冲字符输出流
close():关闭此流,但要先刷新它

flush():刷新该流的缓冲

newLine():写入一个分隔符,实际就是将System.getProperty(“line.separator”)进行了封装

write(char[] cbuf,int off,int len):写入字符数组的某一部分

write(char c):写入单个字符
write(String s,int off,int
len)
:写入字符串的某一部分

public BufferedReader extends Reader:

从字符输入流读取文本,缓冲各个字符,从而实现字符、数组和行(文本的行数通过回车符来进行判定)的高效读取

注意:缓冲区对象(例如BufferedWriter)操作的都是缓冲区中的内容,email的格式内容从外设到内存是由底层流对象完成的(例如Writer),具体将在如下介绍

read():读取单个字符
read(char[] cbuf,int off,int
len)
:将字符读入数组的某一部分

readLine():读取一个文本行,通过下列字符之一即可认为某行已终止,换行(‘\n’),回车(‘\r’)或回车后直接跟着换行

返回:包含该行内容的字符串,不包含任何终止符,如果已经到达流末尾,则返回null

bufr.read(buf)是建立缓冲区时调用的方法,因此虽然BufferedReader的read()方法是读取单个字符,但是也是从缓冲区读取,已经是高效方法了。

readLine()方法,在读到一个数据之后不进行操作,而是继续进行缓冲并判断结束标记,详细可以参加图示注释。

注:注释部分代码是逐个读取字符

IO流学习笔记(二)之BufferedWriter与BufferedReader及实例Demo的更多相关文章

  1. JAVA.IO流学习笔记

    一.java.io 的描述 通过数据流.序列化和文件系统提供系统输入和输出.IO流用来处理设备之间的数据传输 二.流 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数 ...

  2. IO流学习笔记(一)之FileWriter与FileReader

    IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的对象都在IO包中 流按照操作数据分为两种:字节流和字符流 流按流向分为:输入流和输出流 输入流和输出流是相对于 ...

  3. IO流学习笔记

    1.File类 文件和目录路径名的抽象表示形式. 4种构造方法 File(File parent, String child) File(File parent, String child) File ...

  4. 。。。IO流学习之二。。。

    fileReader的用法: import static org.junit.Assert.*; import java.io.File; import java.io.FileNotFoundExc ...

  5. IO流总结笔记二

    ​ Reader |--InputStreamReader |--FileReader:专门用于处理文件的字符读取流对象 Writer |--OutputStreamWriter |--FileWri ...

  6. Java IO流学习总结二:File

    Java File类的功能非常强大,利用java基本上可以对文件进行所有操作.首先来看File类的构造函数的源码 /** * Internal constructor for already-norm ...

  7. Java IO学习笔记二

    Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...

  8. Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter

    在上一篇文章中Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream介绍了缓冲流中的字节流,而这一篇着重介绍缓冲流中字符流Buffered ...

  9. Java IO学习笔记二:DirectByteBuffer与HeapByteBuffer

    作者:Grey 原文地址:Java IO学习笔记二:DirectByteBuffer与HeapByteBuffer ByteBuffer.allocate()与ByteBuffer.allocateD ...

随机推荐

  1. airtest前期准备(pocoSDK+unity打apk包+安装pocoui库)

    只介绍unity的环境准备,cocos的可以参考官方文档    https://poco-chinese.readthedocs.io/zh_CN/latest/source/doc/integrat ...

  2. (Opencv4)二值化图像

    (Opencv4)二值化图像  ret, dst = cv2.threshold(src, thresh, maxval, type) threshold : 极限,临界值,阈值 ret: 一个数 s ...

  3. OpenCV 之 特征检测

    特征,也称 兴趣点 或 关键点,如下:蓝框内区域平坦,无特征:黑框内有"边缘",红框内有"角点",后二者都可视为"特征" 角点作为一种特征, ...

  4. intouch与PLC之间通讯状态监测和设置

    intouch与PLC进行通讯状态监测中,一般做法需要PLC来实施主动脉冲计数,或者bool变化来实现.本文通过上位机自带参数设置,实现对intouch通讯状态监视,将画面恢复初始状态,并及时弹窗报警 ...

  5. Jenkins自动化部署最完整教程

    1.概述 Jenkins 是一个可扩展的持续集成引擎.主要用于持续.自动地构建/测试软件项目.监控一些定时执行的任务.Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行 ...

  6. Vue 脚手架学习

    首先就是安装脚手架 npm install @vue/cil -g 全局安装 在这里我遇到一个问题:安装不了脚手架,报错显示: 通过苦逼的查找原因就是 以前使用的taobao镜像 导致的,删除镜像换成 ...

  7. 开源爆款,阿里P7Android技术笔记,理论与实战齐飞,限时开放下载!

    自我介绍 2013年java转到Android开发,在小厂待过,也去过华为,OPPO等大厂待过,18年四月份进了阿里一直到现在. 被人面试过,也面试过很多人.深知大多数初中级Android工程师,想要 ...

  8. Java时间类从此变得清晰明了

    Java时间类 Java时间类分为Date 日期类和Calendar 日历类,相信很多小伙伴在初学时会对这个两个类的用法.区别以及有什么联系会感到疑惑,似乎懂了,但又不能具体说清,今天再带你来清晰的再 ...

  9. Docker命令图

    attach #当前shell下 attach连接指定运行镜像 build #通过DockerFile 定制镜像 commit #提交当前容器为新的镜像 cp #从容器中拷贝指定文件或者目录到宿主机中 ...

  10. jupyter notebook使用python虚拟环境

    jupyter指定环境启动 背景 系统环境中安装有jupyter及相关库,因项目需要,新建了一个torch相关的虚拟环境并安装了对应的内容, 此时,想通过系统中的jupyter启动一个可以应用虚拟环境 ...