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()方法。

  • 相关阅读:
    [718. 最长重复子数组]
    排序算法--归并,堆,快速排序
    改进的插排--希尔排序
    排序算法--选泡插
    对封装继承多态的理解
    Servlet[springmvc]的Servlet.init()引发异常
    [面试题 16.18. 模式匹配]
    [124. 二叉树中的最大路径和](
    7.29_python_lx_day11
    7.28_python_lx_day18
  • 原文地址:https://www.cnblogs.com/sdlzspl/p/7272808.html
Copyright © 2011-2022 走看看