javaIo

直接在源代码中f4 或者 Ctrl + t 查看继承结构

1. JavaIO类。

文件:
File、RandomAccessFile
流:
字节流:InputStream、outputStream ;字符流:Reader、 Writer;(如下图

java IO类

2. 总的类

字节流和字符流:

字节流和字符流

装饰器:给流加上特性,比如缓存什么的
适配器:将字节流转换为字符流

3. 详解


输入装饰流
FilterInputStream是装饰流;是BufferedInputStream和DataInputStream的超类。
DataInputStream 是数据输入流。它是用来装饰其它输入流,它“允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型”。
BufferedInputStream 是缓冲输入流。它的作用是为另一个输入流添加缓冲功能。


输出装饰流

  1. FilterOutputStream 是过滤输出流。它是DataOutputStream,BufferedOutputStream和PrintStream的超类。
  2. DataOutputStream 是数据输出流。它是用来装饰其它输出流,它“允许应用程序以与机器无关方式向底层写入基本 Java 数据类型”。
  3. BufferedOutputStream 是缓冲输出流。它的作用是为另一个输出流添加缓冲功能。
  4. PrintStream (装饰流)是打印输出流。它是用来装饰其它输出流,能为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。

字符流


输入适配流
字节转字符

  1. BufferedReader 是字符缓冲输入流。它的作用是为另一个输入流添加缓冲功能。
  2. InputStreamReader 是字节转字符的输入流。它是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。


输出适配流

  1. BufferedWriter 是字符缓冲输出流。它的作用是为另一个输出流添加缓冲功能。
  2. OutputStreamWriter 是字节转字符的输出流。它是字节流通向字符流的桥梁:它使用指定的 charset 将字节转换为字符并写入。
  3. FileWriter 是字符类型的文件输出流。它通常用于对文件进行读取操作。
  4. PrintWriter (装饰流)是字符类型的打印输出流。它是用来装饰其它输出流,能为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。

4.对应关系

字节流(输入和输出对应的关系)


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

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

5【字符流和字节流之间的关系

流程

通过三个明确来完成。

1,明确源和目的。

源:输入流。InputStream Reader

目的:输出流。OutputStream Writer。

2,操作的数据是否是纯文本。

是:字符流。 不是:字节流。

3,当体系明确后,在明确要使用哪个具体的对象。

通过设备来进行区分:

源设备:内存,硬盘。键盘

目的设备:内存,硬盘,控制台。

分析过程示例:

将一个文本文件中数据存储到另一个文件中。复制文件。

源:因为是源,所以使用读取流。InputStream Reader

是不是操作文本文件。

是!这时就可以选择Reader

这样体系就明确了。

接下来明确要使用该体系中的哪个对象。

明确设备:硬盘。上一个文件。

Reader体系中可以操作文件的对象是 FileReader

是否需要提高效率:是!。加入Reader体系中缓冲区 BufferedReader.

FileReader fr = new FileReader("a.txt");
BufferedReader bufr = new BufferedReader(fr); 

目的:OutputStream Writer

是否是纯文本。

是!Writer。

设备:硬盘,一个文件。

Writer体系中可以操作文件的对象FileWriter。

是否需要提高效率:是!。加入Writer体系中缓冲区 BufferedWriter

FileWriter fw = new FileWriter("b.txt");
BufferedWriter bufw = new BufferedWriter(fw);

参考来源:

  1. http://www.cnblogs.com/oubo/archive/2012/01/06/2394638.html
  2. http://www.cnblogs.com/skywang12345/p/io_01.html
  3. http://www.cnblogs.com/runwind/p/4212178.html
原文地址:https://www.cnblogs.com/wangbiwei/p/6399732.html