【基础】IO流

对于流的概念,感觉晦涩难懂,根据个人的理解,整理下,以及一些常用的流

1 概念理解

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

2 流的分类

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

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

输入流又叫做InputStream,输入也叫做读 Read   输出流又叫做OutputStream,输出也叫写 Write

2  按照读取数据方式不同:字节流 字符流

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

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

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

扫描二维码关注公众号,回复: 1145034 查看本文章

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

3 具体的流

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

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

DateInputStream-----------------专门读取数据
DateOutputStream----------------专门读取数据

ObjectInputStream---------------专门读取java对象
ObjectOutputStream--------------专门读取java对象

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

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

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

猜你喜欢

转载自my.oschina.net/u/3523594/blog/1821199