zoukankan      html  css  js  c++  java
  • IO流学习笔记(二)之BufferedWriter与BufferedReader及实例Demo

    在之前的学习笔记(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():读取一个文本行,通过下列字符之一即可认为某行已终止,换行(‘ ’),回车(‘ ’)或回车后直接跟着换行
    返回:包含该行内容的字符串,不包含任何终止符,如果已经到达流末尾,则返回null

    这里写图片描述

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

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

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

  • 相关阅读:
    ubuntu分辨率
    xubuntu无法进图形界面问题
    dl简单模板,无pretraining过程
    ubuntu远程失败xrdp重启命令
    强制ubuntu登陆用户退出
    NumPy for MATLAB users
    How to calculate bits per character of a string? (bpc) to read
    ubuntu ssh前后台切换命令相关
    samba共享文件夹设置
    Ubuntu下环境变量的设置
  • 原文地址:https://www.cnblogs.com/zhangyanran/p/10037408.html
Copyright © 2011-2022 走看看