zoukankan      html  css  js  c++  java
  • IO流(一)之IO流综述

    1.字节流

    字节流顾名思义,传递的数据类型为字节。字节流分为两种,字节输入流(InputStream)和字节输出流(OutputStream)。

    1.1字节输入流

    InputStream是所有字节输入流的超类。下图是字节输入流的框架:

    ByteArrayInputStream是字节数组输入流。

    PipedInputStream 是管道输入流,和PipedOutputStream配套使用,用于线程间的通信。

    FilterInputStream是过滤输入流,用来装饰其他输入流。FilterInputStream有两个子类:DataInputStream和BufferedInputStream。

    DataInputStream是数据输入流,它“允许应用程序以与机器无关方式从底层输入流中读取基本java数据类型数据”。

    BufferedInputStream是缓存输入流,作用是为另一个对象增加缓存功能。

    FileInputStream是文件输入流,用于对文件读取操作。

    ObjectInputStream是对象输入流,和ObjectOutputStream一起,提供“基本数据或对象”的持久存储。

    1.2自己输出流

    OutputStream是所有字节输出流的超类。下图是字节输出流的框架:

    ByteArrayOutputStream是字节数组输出流,写入字节数组输出流的内容被写进一个字节数组。可以通过toByteArray()和toString()获取写入数据。

    PipedOutputStream是管道输出流,和PipedInputStream联合使用,用于线程间的通信。

    FilterOutputStream是过滤输出流,用来装饰其他输出流。子类有:DataOutputStream、BufferedOutputStream、PrintStream。

    DataOutputStream是数据输出流,支持“应用程序以与机器无关方式向底层输出流中写入java基本数据类型数据”。

    BufferedOutputStream是缓冲输出流,用来装饰其他输出流,使其具有缓冲功能。

    PrintStream是打印输出流,用来装饰其他输出流,使他们能够方便的打印各种数据值表示形式。

    FileOutputStream是文件输出流,使文件具有写入功能。

    ObjectOutputStream是文件输出流,和ObjectStream一起,提供对“基本数据和对象”的持久存储。

    1.3字节输入流和字节输出流对应关系

    2.字符流

    字符流顾名思义,传递的数据类型为字符。字符流分为两种,字符输入流(Reader)和字符输出流(Writer)。

    2.1字符输入流

    Reader是所有字符输入流的超类,字符输入流的框架,如图所示:

    CharArrayReader是字符数据输入流,用来读取字符数组。

    PipedReader是管道输入流,与PipedWriter配合使用,用于线程间的通讯。

    FilterReader是字符类型的过滤输入流,用来装饰其他输入流。

    BufferedReader是字符类型的缓冲输入流,用给其他输入流赋予缓冲功能。

    InputStreamReader是字节转字符的输入流,是字节流通向字符流的桥梁,通过指定CharSet将字节转换为字符。

    FileReader是InputStream的子类,用途是使文件具有读取功能。

    2.2字符输出流

    Writer是字符输出流的超类,字符输出流的框架,如图所示:

    CharArrayWriter是字符数组输出流,用途是输入字符数组。

    PipedWriter是字符管道输出流,与PipedReader配合使用,用于线程间的通信。

    FilterWriter是字符过滤输出流,用于装饰其他输出流。

    BufferedWriter是字符缓冲输出流,用于装饰其他输出流,使其具有缓冲功能。

    PrintWriter是字符打印输出流,用于装饰其他输出流,使其方便的打印各种数据类型的表示形式。

    OutputStreamWriter是字节转字符的输出流,用于装饰其他输出流,通过指定CharSet将字节转化为字符并写入。

    FileWriter是OutputStream的子类,用来装饰其他输入流,使文件具有写入功能。

    2.3字符输入流和字符输出流的对应关系

    3.字节输入流和字符输入流对比

    字节输入流和字符输入流相比有三点不同:

    a.在字节输入流中FilterInputStream是DataInputStream和BufferedInputStream的父类。而在字符输入流中FilterReader和BufferedReader是评级,且在字符输入流中没有Data类型的类;

    b.在字节输入流中,FileInputStream是超类InputStream的子类 ,而在字符输入流中,FileReader是InputStream的子类。

    c.在字节输入流中,有Object类型的类ObjectInputStream。而字符输入流中没有。

    4.字节输出流与字符输出流对比

    字节输出流与字符输出流相比有三点不同:

    a.字节输出流FilterOutputStream有三个子类:DataOutputStream、BufferedOutputStream、PrintStream。而在字符输出流中,FilterWriter、BufferredWriter、PrintWriter是同级,且不存在Data类型的字符输出流类。

    b.在字节输出流中,FileOutputStream是OutputStream的父类,而在字符输出流中FileWriter是OutputStreamWriter的子类。

    c.在字节输出流中有Object类型的输出流类,而在字符输出流中没有。

  • 相关阅读:
    面向Java新手的日志 承 一 异常的使用
    现代JVM内存管理方法及GC的实现和主要思路
    现代Java EE应用调优和架构 大纲篇 (暂定名)
    无聊的解决方案
    代码生成器项目正式启动
    现代Java应用的性能调优方法及开发要点
    我的十年
    快慢之间 一个多线程Server疑难杂症修复记录
    面向Java新手的日志 起
    MongoTemplate项目启动
  • 原文地址:https://www.cnblogs.com/hitnmg/p/9429582.html
Copyright © 2011-2022 走看看