javaIo
直接在源代码中f4 或者 Ctrl + t 查看继承结构
1. JavaIO类。
文件:
File、RandomAccessFile
流:
字节流:InputStream、outputStream ;字符流:Reader、 Writer;(如下图)
java IO类
2. 总的类
字节流和字符流:
字节流和字符流
装饰器:给流加上特性,比如缓存什么的
适配器:将字节流转换为字符流
3. 详解
输入装饰流
FilterInputStream是装饰流;是BufferedInputStream和DataInputStream的超类。
DataInputStream 是数据输入流。它是用来装饰其它输入流,它“允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型”。
BufferedInputStream 是缓冲输入流。它的作用是为另一个输入流添加缓冲功能。
输出装饰流
- FilterOutputStream 是过滤输出流。它是DataOutputStream,BufferedOutputStream和PrintStream的超类。
- DataOutputStream 是数据输出流。它是用来装饰其它输出流,它“允许应用程序以与机器无关方式向底层写入基本 Java 数据类型”。
- BufferedOutputStream 是缓冲输出流。它的作用是为另一个输出流添加缓冲功能。
- PrintStream (装饰流)是打印输出流。它是用来装饰其它输出流,能为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。
字符流
输入适配流
字节转字符
- BufferedReader 是字符缓冲输入流。它的作用是为另一个输入流添加缓冲功能。
- InputStreamReader 是字节转字符的输入流。它是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。
输出适配流
- BufferedWriter 是字符缓冲输出流。它的作用是为另一个输出流添加缓冲功能。
- OutputStreamWriter 是字节转字符的输出流。它是字节流通向字符流的桥梁:它使用指定的 charset 将字节转换为字符并写入。
- FileWriter 是字符类型的文件输出流。它通常用于对文件进行读取操作。
- 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);