java心得(IO)

来源:互联网 发布:爱淘宝1元红包抽不中 编辑:程序博客网 时间:2024/06/08 15:02

一.IO有什么用?

解决设备和设备之间的数据传输问题,也就是硬盘到内存,内存到硬盘

有时候为了让数据持久化,就好像我们玩单机游戏,有时候需要保存游戏,这时候就通过IO流保存人物角色属性的数据到本地硬盘,需要从存档开始就调用到内存。


二.流的分类

1.按流向分类(输入流,输出流)

1.1InputStream   所有输入字节流的基类,也就是抽象类

                FileInputStream   读取文件字节的输入类

BufferedInputStream    缓存输入字节类,本质就是里面是一个8kb字节的数据,目的加快文件输入

         1.2OutputStream   所有输出字节流的基类,也就是抽象类

                FileOutputStream   读取文件字节的输出类

BufferedOutputStream    缓存输出字节类,本质就是里面是一个8kb字节的数据,目的加快文件输出

2.按流类分类(字节流,字符流)(1就是属于字节流,2属于字符流)

2.1 Reader 所有输入字符流的基类,抽象类

   FileReader 读取文件字符的输入类

BufferedInputReader 缓存输入字符类,本质是8192长度的字符数组

2.2 Writer 所有输出字符流的基类,抽象类

   FileWriter写入文件字符的输出类

BufferedInputWriter 缓存写入字符类,本质是8192长度的字符数组

3.按流的功能来分(1,2都属于节点流,以下属于处理流)

3.1怎么区分节点流和处理流

节点流记住是和源文件和目标文件也就是直接和需要处理东西相连接就是节点流,而处理流就是对节点流的封装,也就是装饰,而且记得处理流的输入参数是节点流这个来区分

3.2 输入字节流转换

InputStreamRead

输出字节流转换

OutputStreamWrite

3.3 转换流作用

1.把对应字节流转换为对应字符流,比如在网络socket中使用

2.指定编码表读写文件数据 比如FileRead默认JDB编码,所以构造函数有转换UTF-8编码的

三,什么时候用字节流,什么时候用字符流?

读取数据不需要编码和解码情况下用字节流,比如图片的存取,也就是二进制文件流

读写数据需要编码和解码时候用字符流,比如中文字符读取

个人觉得本质;字符流=字节流+编码;