本部分主要介绍:IO 操作的主要对象,以及使用注意事项
Java IO 相关类的介绍
-
类的相关关系
-
如图
-
-
基本规则
-
如图
-
Java IO 主要操作对象介绍
IO 的基本类
-
字节流(抽象类)
InputStream,从文件中读取数据
OutputStream,像文件中写入数据
-
字符流(抽象类)
Reader,从文件中读取数据
Writer,像文件中写入数据
-
字节流与字符流相互转换 (可以指定编码表)
InputStreamReader,字节流向字符流转换。解码
OutputStreamWriter,字符流向字节流转换。编码
字节流可以操作任何文件数据,如图片、音频、文本文件等。但是操作文件文件时,最好使用字符流操作
缓冲区
-
缓冲区的作用、特点
提高输入、输出的效率
字符流、字节流在使用缓冲区后,其中的输入、输出、刷新、关闭的方法都是使用缓冲区定义的
-
字符流缓冲区
BufferedReader
BufferedWriter
-
字符流缓冲区
BufferedInputStream
BufferedOutputStream
字符流
-
实际操作对象是 抽象类 的子类
FileReader
FileWriter
-
FileReader 的方法
read()
没有 flush() 方法
close()
-
FileWriter 的方法
write()
flush()
close()
-
缓冲区的使用
BufferedReader(FileReader)
BufferedWriter(FileWriter)
字节流
-
实际操作对象是 抽象类 的子类
FileInputStream
FileOutputStream
-
FileInputStream 的方法
read()
没有 flush() 方法
close()
-
FileOutputStream 的方法
write()
flush(),此方法的方法体中没有实际代码,刷不刷新没有实际意义。
close()
-
缓冲区的使用
BufferedInputStream(FileInputStream)
-
BufferedOutputStream(FileOutputStream)
- 缓冲区的 flush() 方法,有实际意义。
字节流与字符流相互转换
-
字节流转换为字符流
InputStreamReader isr = new InputStreamReader(in);
-
字符流转换为字节流
OutputStreamWriter osw = new OutputStreamWriter(out);
相互转换后,缓冲区同样使用
流的操作基本规律
-
介绍
理解其规律,是因为 Java 的流对象较多,开发时需使用较为合理的对象
主要从 4 方面体现
-
第一点:明确源和目的
-
源
InputStream
Reader
-
目的
OutputStream
Writer
-
-
第二点:明确数据是否为纯文本数据
-
源是否纯文本数据
是:Reader
否:InputStream
-
目的是否为纯文本数据
是:writer
否:OutputStream
-
-
第三点:明确具体设备
-
源设备
硬盘:File
键盘:System.in
内存:数组
网络:Socket流
-
目的设备
硬盘:File
控制台:System.out
内存:数组
网络:Socket流
-
-
第四点:是否需要额外功能
提高效率使用 Buffer
字节流字符流相互转换