IO流概述

流是有起点和终点的有序字节序列的集合。

流的分类:

                输入流/输出流:以当前程序为参照,如果程序读取数据就是输入流,输出数据就是输出流。

                字节流/字符流:如果是以字节为单位处理流中的数据就是字节流,以字节为单位处理流中的数据就是字符流。

                节点流/处理流:如果直接从设备上读写数据就是节点流;处理流是对节点流的包装。

流的作用是读写设备上的数据,这儿的设备是广义的设备,可以是文件,可以是网络。

 

读写文件常用的IO流:

                                    IO流概述

 

IO流概述

在java IO包中定义了相关的流类,以Stream为结尾的都是字节流,以Reader结尾的都是字符输入流,以Writer结尾的都是字符输出流。

1.FileInputStream/FileOutputStream

FileInputStream类用于以字节为单位读取文件中的数据。

FileOutputStream类用于以字节为单位输出文件到文件中

2.BufferedInputStream/BufferedOutputStream

字节缓存流是对其它字节流的包装。

IO流概述

3.DataInputStream/DataOutputStream

读写数据的时候可以带有数据格式

4.PrintStream

打印字节流

5.装饰者设计模式

设计模式,可以简单的理解为别人总结一套解决方案,这套解决方案被大多数人熟知与认可。

装饰者设计模式,对现有类的所有方法进行功能的扩展

在IO流中,所有Filter开头的流类都采用了装饰着设计模式。

6.ObjectInputStream/ObjectOutputStream

对象序列化:

ObjectInputStream把对象转换为01二进制序列

对象反序列化

ObjectOutputStream把01二进制序列转化为对象

注意:

        对象的序列化/反序列化的前提是,对象的类需要实现Serializable接口

一般情况下,实现序列化Serializable接口类,需要手动添加SerialVersionUID字段。

7.InputStreamReader/OutputStreamWriter

当文件的编码与当前环境编码不兼容时,使用转换流

InputStreamReader 把字节流以指定的编码转换为字符流

OutputStreamWriter 把字符流以指定的字节编码转换为字节流

他采用了适配器设计模式

8.BufferedReader/BufferedWriter

字符缓冲流,对字符流进行缓冲,默认有8192的字符大小缓冲区。

9.File类

读写文件的内容使用IO流相关的类,对文件/文件夹进行操作使用File类。

10.IO+Properties

经常把一些系统属性保存到配置文件中

经常单独创建一个包,在该包中添加配置文件,配置文件扩展名是.properties

可以使用Properties读取配置文件

也可以使用ResourceBoundle读取配置文件