zoukankan      html  css  js  c++  java
  • Java学习之流Stream理解(一)

      缓存可以说是I/O的一种性能优化。缓存流为I/O流增加了内存缓冲区。有了缓冲区,使得在流上执行skip()、mark()和reset()方法都称为可能。

    1.BufferedInputStream 类 和 BufferedOutputStream 类

      BufferedInputStream 类可以对任意的 InputStream 类 进行带缓冲区的包装以达到性能的优化。BufferedInputStream 类有两个构造函数:

      BufferedInputStream (InputStream  in )

      BufferedInputStream (InputStream  in,int  size )

      第一种形式的构造函数创建一个带有32个字节的缓冲流;第二种形式的构造函数按指定大小来创建缓冲区。一个最优的缓冲区的大小,取决于它的操作系统、可用的内存以及及其配置,从构造函数可以看出,BufferedInputStream 对象位于InputStream 对象之前,字节数据读取文件的过程:

        

      使用BufferedOutputStream输出信息和向OutputStream输入信息完全一致,只不过BufferedOutputStream有一个flush()方法用来将缓存区的数据强制输出完。BufferedOutputStream 也有两个构造函数:

      BufferedOutputStream(OutputStream  out)

      BufferedOutputStream(OutputStream  out,int  size)

      第一种构造函数创建一个32字节的缓存区,第二种形式以指定的大小来创建缓存区。flush()方法就是用于即使缓存区没有满的情况下,也将缓存区的内容强制写入到外设,习惯称这个过程为刷新。flush()方法只对使用缓存区的OutputStream  类的子类有效。当调用close()方法时,系统在关闭流之前,也会将缓存区中信息刷新到磁盘文件中。

      2、BufferedReader类和BufferedWriter类

      BufferedReader类和BufferedWriter类分别继承Reader类和Writer类。这两个类同样具有内部缓存机制,并可以以行为单位进行输入/输出。根据BufferedReader类的特点,字符读取文件的过程。

    BufferedReader类常用的方法:

      read():读取单个字符。

      readLine():读取一个问本行,并将其返回为字符串;若无数据可读,则返回null 。

      write(String s ,int   offset,int  len):写入字符串的某一部分 。

      flush():刷新该流的缓存。

      newLine():写入一个 行分隔符。

      在使用BufferedWriter类的writer()方法时,数据并没有立即被写入至输出流中,而是首先进入缓存区中。如果想立刻将缓存区中的数据写入输出流中,一定要调用flush()方法。

  • 相关阅读:
    剑指offer之第一个只出现一次的字符
    剑指offer之求1+2+...n
    剑指offer求两个整数之和(要求在函数体内不得使用+、-、*、/四则运算符号)
    剑指offer之从上往下打印二叉树
    剑指offer之栈的压入、弹出序列(利用辅助栈)
    58笔试-忘记题目
    联通软研院2020年球季校招笔试第三题 20190916
    简单的计算小技巧
    前端访问不到本地图片,IDEA设置Tomcat虚拟路径
    求最大子列和问题
  • 原文地址:https://www.cnblogs.com/sdlzspl/p/7272808.html
Copyright © 2011-2022 走看看