zoukankan      html  css  js  c++  java
  • ....

    输入流和输出流相对于内存设备而言.

    将外设中的数据读取到内存中:输入
    将内存的数写入到外设中:输出。


    字符流的由来:
    其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表。获取对应的文字。
    在对这个文字进行操作。简单说:字节流+编码表

    ---------------------------------------

    字节流的两个顶层父类:
    1,InputStream 2,OutputStream.

    字符流的两个顶层父类:
    1,Reader 2,Writer

    这些体系的子类都以父类名作为后缀。
    而且子类名的前缀就是该对象的功能。

    就从熟悉的文字开始字符流,


    //需求:将一些文字存储到硬盘一个文件中。
    记住;如果要操作文字数据,建议优先考虑字符流。
    而且要将数据从内存写到硬盘上,要使用字符流中的输出流。Writer
    硬盘的数据基本体现是文件。 希望找到一个可以操作文件的Writer.

    找到了FileWriter

    //需求:读取一个文本文件。将读取到的字符打印到控制台.
    同上,找到了FileReader

    ==========================

    字符流缓冲区:
    BufferedWriter
    :newLine();

    BufferedReader:
    : readLine();


    使用缓冲区复制一个文本文件。

    装饰设计模式:
    对一组对象的功能进行增强时,就可以使用该模式进行问题的解决。

    装饰和继承都能实现一样的特点:进行功能的扩展增强。

    有什么区别呢?

    首先有一个继承体系。
    Writer
    |--TextWriter:用于操作文本
    |--MediaWriter:用于操作媒体。

    想要对操作的动作进行效率的提高。
    按照面向对象,可以通过继承对具体的进行功能的扩展。
    效率提高需要加入缓冲技术。

    Writer
    |--TextWriter:用于操作文本
    |--BufferTextWriter:加入了缓冲技术的操作文本的对象。
    |--MediaWriter:用于操作媒体。
    |--BufferMediaWriter:

    到这里就哦了。但是这样做好像并不理想。
    如果这个体系进行功能扩展,有多了流对象。
    那么这个流要提高效率,是不是也要产生子类呢?是。这时就会发现只为提高功能,进行的继承,
    导致继承体系越来越臃肿。不够灵活。

    重新思考这个问题?
    既然加入的都是同一种技术--缓冲。
    前一种是让缓冲和具体的对象相结合。
    可不可以将缓冲进行单独的封装,哪个对象需要缓冲就将哪个对象和缓冲关联。

    class Buffer{
    Buffer(TextWriter w)
    {}

    Buffer(MediaWirter w)
    {

    }
    }
    class BufferWriter extends Writer{
    BufferWriter(Writer w)
    {
    }
    }
    Writer
    |--TextWriter:用于操作文本
    |--MediaWriter:用于操作媒体。
    |--BufferWriter:用于提高效率。

    装饰比继承灵活。

    特点:装饰类和被装饰类都必须所属同一个接口或者父类。

    --------------------------------------

    字节流:

    InputStream

    OutputStream

    字节流:
    FileInputStream
    FileOutputStream
    BufferedInputStream
    BufferedOutputStream
    字符流:
    Writer Reader
    FileReader
    FileWriter
    BufferedReader
    BufferedWriter

  • 相关阅读:
    clip属性,截取你想要显示的图片
    select背景灰色
    [转]ShowModal() = mrOk
    【转】Delphi-Unit文件结构
    析构方法
    [转]Delphi 7连接MySql /MariaDB
    MySQL/Mariadb遇见的问题
    更换数据库
    FlameRobin
    FireBird初使用
  • 原文地址:https://www.cnblogs.com/xiaowei88/p/5515131.html
Copyright © 2011-2022 走看看