IO流

IO流体系结构,均基于四个顶层的抽象类

– 对于字节流来说

    •   InputStream:表示所有字节输入流的父类。

      – InputStream的子类,写法都是XxxInputStream.

    •   OutputStream:表示所有字节输出流的父类。

      – OutputStream的子类,写法均是XxxOutputStream.

– 对于字符流来说

    •   Reader:表示所有字符输入流的父类。

      – Reader的子类,写法都是XxxReader.

    •   Writer:表示所有字符输出流的父类。

      – Writer的子类,写法都是XxxWriter.

– 节点流和包装流

    •   节点流:流对象来说,能够直接操作数据源的。
    •   包装流:以节点流或包装流作为构造方法的参数。无法直接访问数据源。

注意:所有跨出JVM区域的操作对象,必须要关闭。

 

字节流输出流                 字节输入流

OutputStream                  InputStream

   FileOutputStream                FileInputStream      节点流   File

   ByteArrayOutputStream           ByteArrayInputStream  节点流  字节数组

   BufferedOutputStream             BufferedInputStream   包装流流   缓冲区

   DataOutputStream                DataInputStream     包装流   基本类型

   ObjectOutputStream              ObjectInputStream    包装流   对象

   PrintStream   向外输出

字符流输出流                 字符输入流

 

Writer                        Reader

FileWriter                     FileReader     文件

BufferedWriter                 BufferedReader   包装流   缓冲

OutputStreamWriter             InputStreamReader   包装流   编码解码

PrintWriter

 

 

 

 

 

 

 

 


 

字节流体系结构

InputStreamOutputStream体系

  – FileInputStreamFileOutputStream

    •   节点流,可操作数据源文件

  – ByteArrayInputStreamByteArrayOutputStream

    •   节点流,内存

  – BufferedInputStreamBufferedOutputStream

    •   包装流,实现缓冲

  – DataInputStreamDataOutputStream

    •   包装流,操作基本数据类型和String

  – ObjectInputStreamObjectOutputStream

    •   包装流,操作基本数据类型和对象。
    •   实现序列化和反序列化
        •   – 序列化:将内存中的对象保存到文件系统中。

            – 反序列化:保存在文件系统中的对象读取到内存中。

  – PrintStream

    •   打印流,节点流,包装流,自动刷新,方便打印输出println方法。

 

字符流

对于IO其实都是以字节流形式操作。在实际使用中,文本数据比较常用,为了方便操作文本数据,对字节流进行封装,形成了字符流。

注意:

1- 字符流底层操作也是字节数据,只是对字节数据进行了处理。

2- 字符流对象中,含有码表。如果不指定,默认为JVM中的字符编码。

 

ReaderWriter体系

– FileReaderFileWriter

– BufferedReaderBufferedWriter

– InputStreamReaderOutputStreamWriter

– PrintWriter

 

ReaderWriter体系

– Reader

  • 用于读取字符流的抽象类

– Writer

  • 用于写入字符流的抽象类
  • 含有写入字符串的方法:write(String str)

 

FileReaderFileWriter

– 属于节点流,此时数据源是文件。

– FileInputStream,FileOutputStream类似,不同之处在于一次读取一个字符。

– FileReaderFileWriter类中的方法,都是继承自其父类。

 

BufferedReaderBufferedWriter

– 属于过滤流,用于提供缓冲功能。

– BufferedReader

  • 除了读取的各个方法,还提供了readLine()方法,用于读取一行字符。

– BufferedWriter

  • 除了写入的各个方法,还提供了newLine()方法,用于换行。
  • ‘\r\n’用于换行,但不支持跨平台。newLine()方法,可跨平台。

 

InputStreamReaderOutputStreamWriter

– 转换流,可以在byte<->char之间互相转换;在转换的过程中,可以指定字符编码。

– InputStreamReader

  • byte->char(解码)

– OutputStreamWriter

  • char->byte(编码

 

 

PrintWriter  /  PrintStream

 

– 提供方便打印字符的各种方法。可以当做节点流,也可以当做过滤流。

 

–  PrintStream 类不同,如果启用了自动刷新,则只有在调用 printlnprintf format 的其中一个方法时才可能完成此操作,而不是每当正好输出换行符时才完成。

 

– 构造方法:

 

  • 构造方法中可以有File, String, Writer(有刷新的重载构造方法),除此之外,还包含OutputStream(含有刷新的重载构造方法)(因为中间使用了OutputStreamWriter转换流)。
  • println,print方法。

 

posted @ 2019-11-12 20:33  MRCHENH  阅读(132)  评论(0编辑  收藏  举报