【基础】IO流

对于流的概念,感受晦涩难懂,根据我的的理解,整理下,以及一些经常使用的流java

1 概念理解

咱们举个场景,从迅雷的服务器上,下载一部电影,大概的过程是,迅雷硬盘读取到内存,经过网络传输,到本地电脑内存,再由本地电脑,持久化到本地硬盘,这就是流,之因此叫流,由于像水流同样,如上图git

 

2 流的分类

1 按照流的方向而言:输入流  输出流api

输入输出是相对于内存而言的,从内存中出来的就是输出流,到内存中的就是输入流服务器

输入流又叫作InputStream,输入也叫作读 Read   输出流又叫作OutputStream,输出也叫写 Write网络

这句话很重要,必定是先读出来在写,因此输入流叫读,输出流叫写spa

2  按照读取数据方式不一样:字节流 字符流.net

字节流按字节方式读取   字符流按字符方式读取(一次两个字节)日志

字节流适合读取:视频 声音 图片 等二进制的文件(微软的doc文件,不是纯文本,包括格式等)视频

字符流适合读取:纯文本文件对象

java 语言中,全部的字节流都是以Stream结尾  全部的字符流都是以Reader或Writer结尾

 

3 具体的流

java.io.* (重点掌握这16个)
FileInputStream ----------------读取文件 | 字节 | 输入
FileOutputStream ---------------读取文件 | 字节 | 输出
FileReader ---------------------读取文件 | 字符 | 输入
FileWriter----------------------读取文件 | 字符 | 输出

BufferedInputStream ------------带有缓冲区 | 字节 | 输入
BufferedOutputStream------------带有缓冲区 | 字节 | 输出
BufferedReader------------------带有缓冲区| 字符 | 输入
BufferedWriter------------------带有缓冲区| 字符 | 输出

InputStreamReader--------------转换流(字节流转换成字符流) 
OutputStreamWriter-------------转换流(字节流转换成字符流) 


DateInputStream-----------------专门读取数据 ,连同数据类型一同读取(两个一块儿使用)
DateOutputStream----------------专门读取数据 ,连同数据类型一同写入(两个一块儿使用)

ObjectInputStream---------------专门读取java对象,反序列化
ObjectOutputStream--------------专门读取java对象,序列化

PrintWriter
PrintStream -------------------标准的输出流(输出到控制台),与日志打印功能密切相关

4 UML类图

 咱们参考jdk文档画出UML类图 :http://tool.oschina.net/apidocs/apidoc?api=jdk-zh 

 InputStream    OutputStream  Reader    Writer   (java中的流四你们族)

 InputStream    OutputStream

 

 

 

 

 

 

 

flush 仅仅针对输出流,意思是把剩余的东西一点不剩的输出,好比一桶水,倒到缸里,剩下一点,用个刷子,一点不剩的刷进去

 Reader    Writer

 

本文参考杜聚宾老师的视频;

相关代码已上传码云:https://gitee.com/liuhuxiang/java

相关文章
相关标签/搜索