您的位置:首页 > 编程语言 > Java开发

java io流

2016-04-12 14:25 375 查看
我们先来看看类图:



图1



参考自http://www.cnblogs.com/zhuYears/archive/2013/04/10/2993292.html

流的概念比较抽象,可以想象一下水流的样子。

io在本质上是单个字节的移动,而流可以说是字节移动的载体和方式,它不停的向目标处移动数据,我们需要做的就是根据流的方向从流中读取数据或者向流中写入数据。

最简单的例子就是下载电影,肯定不是等电影全部下载在内存中在保存到磁盘上,本质上时下载一个字节就保存一个字节。

一个流,必定有源头和目标,可以是计算机内存中的某些区域,也可以是磁盘文件等。

流可以分为节点流和处理流。

根据流向分为输入流和输出流。

根据传输单位分为字节流字符流。

io分类:

java中分为两类:基于字节的和基于字符的:(抽象类)inputStream,outputstream;writer,reader

不管是网络还是磁盘传输,最小的存储单位都是字节。但是程序中操作的数据大多都是字符形式的,所以,java也提供字符处理流。还有一点:数据的传输方式,就是数据写到哪里的问题,主要是以下两种:

1. 每个字符流子类几乎都会有一个相对应的字节流子类,两者功能一样,差别只是在于操作的是字节还是字符。例如CharArrayReader和ByteArrayInputStream,两者都是在内存中建立数组缓冲区作为输入流,不同的只是前者数组用来存放字符,每次从数组中读取一个字符;后者则是针对字节。
ByteArrayInputStream、CharArrayReader为多线程的通信提供缓冲区操作功能。常用于读取网络中的定长数据包

ByteArrayOutputStream、CharArrayWriter为多线程的通信提供缓冲区操作功能。常用于接收足够长度的数据后进行一次性写入
FileInputStream、FileReader把文件写入内存作为输入流,实现对文件的读取操作
FileOutputStream、FileWriter把内存中的数据作为输出流写入文件,实现对文件的写操作
StringReader读取String的内容作为输入流
StringWriter将数据写入一个String
SequenceInputStream将多个输入流中的数据合并为一个数据流
PipedInputStream、PipedReader、PipedOutputStream、PipedWriter管道流,主要用于2个线程之间传递数据
ObjectInputStream读取对象数据作为输入流,对象中的 transient 和 static 类型的成员变量不会被读取或写入
ObjectOutputStream将数据写入对象
FilterInputStream、FilterOutputStream、FilterReader、FilterWriter过滤流通常源和目标是其他的输入输出流,大家可以看到有众多的子类,各有用途,就不一一介绍了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: