IO流学习总结

来源:互联网 发布:天津网络推广优化 编辑:程序博客网 时间:2024/05/21 10:24

IO流学习总结

前言

开始学习IO时,面对java里面如此多的IO流令我万分困惑,为什么一件简单的事情设计者非要搞得如此复杂,但是当我深入学习时才明白设计者的天才之处,现在将学习到的IO知识做个总结,从而进一步提升我对IO流这块的理解。


IO流概览

这里写图片描述

看见这么多类我相信刚开始学习的新人应该都哭晕了,难道我要记住这么多类吗?答案当然不是,理解了自然就记住了


细说IO

节点流

  1. 字节流
    字节流:可以处理文本,音频,视频等
    输入流:InputStream是抽象类
    FileInputStream,ByteArrayInputStream是Inputstream的子类
    输出流:OutPutStream是抽象类
    FileOutputStream,ByteArrayOutputStream是OutputStream的子类

                  这里的输入和输出是以JAVA程序为中心的,流向程序为输入流,流出为输出流              ByteArrayInputStream和ByteArrayOutputStream连接的是java程序和字节数组              FileInputStream和FileOutputStream连接的是java程序和指定文件
  2. 字符流
    字符流:只能处理纯文本
    输入流:Reader是抽象类
    FileReader,CharArrayReader是Reader的实现类
    输出流:Writer是抽象类
    FileWriter,CharArrayWriter是Writer的实现类

                 CharArrayReader和CharArrayWriter连接的是java程序和字符数组             FileReader和FileWriter连接的是java程序和指定文件 

处理流

要理解处理流首先要理解JAVA的设计模式之装饰者模式,设计模式的内容就不再这里详述

  1. 缓冲流
    缓冲流:处理流使得写入和写出变得更加高效
                  BufferedInputStream,BufferedOutputStream
    BufferedReader,BufferedWriter
    以BufferedReader为例子:
       可以看到创建BufferedReaderd对象时需要传入一个Reader的子类,BufferedReader的提供了readLine()方法可以支持每次读取一个文本行
    这里写图片描述

  2. 转换流
    转换流:是字节流通向字符流的桥梁,可以用来编码和解码
                  InputStreamReader,OutputStreamWriter
                  以InputStreamReader为例:
                  可以看到创建 InputStreamReader对象时需要传入一个InputStream的子类,并且可以传入解码的编码方式
                  这里写图片描述

  3. 打印流
         打印流:PrintStream
     

    4.  DataInputStream,DataOutputStream

     5.ObjectInputStream,ObjectOutputStream

原创粉丝点击