您的位置:首页 > 其它

有关流Stream

2015-09-22 09:56 162 查看
什么是流?

流,Stream,英文中溪流的意思。

java.io.File类,File类封装的只是文件名,不是真实的文件。要访问这些文件,就需要用到流。

也就是说,要访问真正的文件,是通过流的方式来读的。

这里将流想象成水管,水管的两端,一端是文件,另一端是程序,程序可以连接多个文件。

流有很多种类型,可以理解为有很多种类型的水管。通过网路的连接的, 两种不同的水管拼在一起;水管一层套一层的,叫做处理流。。。。

流的分类?

 字节流字符流
输入流InputStreamReader
输出流OutputStreamWriter
输入流和输出流?

输入和输出是站在程序的角度来说的。

想象一下,程序是一个大的储水桶。各个文件是不同的小桶。

如果程序读数据,需要从别的水桶输入水,这叫做输入!

如果程序写数据,需要向别的水桶注入水,这里注意水桶可以是新建的空水桶,或者只有半桶水什么的,这叫做输出,从程序向外输出的。

字节流和字符流?

首先,计算机内的语言,我们都知道是010101010,但是我们读文件的时候并不会一位一位读。而是一个字节一个字节读,或者一个字符一个字符读。

字节,一个字节是8位。字符,一个字符是两个字节。

为什么有了字节还需要用到字符呢?因为在计算机中,我们知道中文的汉字都是两个字节的,一个字就是一个字符,如果一个字节一个字节来读,一次只能读半个字,是不完整的。所以需要用到字符。

节点流和处理流?

节点流,就是流的两端都是直接连在文件和程序上的。

处理流,就是流的两端不是直接连在文件和程序上的。而是一层套一层,想象一下,水管一层套一层,也就是对水管内的水作了一定的处理,比如加热,降温什么的。

这就是处理流。

InputStream?

顾名思义,就是向程序中输入数据。接下来讲几个基本方法:

int read() throws IOException //读数据,然后返回字节数,字节数是整型的

int read(byte[] buffer) throws IOException// 这里比较有意思。返回的是字节的数组,为什么可以一个一个返回还要这样建一个数组返回呢?

                                                                            可以理解为水桶,我们蓄满一小桶水的时候再传,不用一口水一口水这样频繁的传了。我们说P2P软件为什么毁硬盘呢,是因为读写硬盘的次数太过频繁了,硬盘负荷比较大,就是因为,每次读写数据的单位太小,1G的东西,读的时候一个KB一个KB读,过于频繁了。

int read(byte[] buffer,int offset,int length) throws IOException

。。。剩下的方法因为暂时没用到所以不赘述。

void close() throws IOException  //关闭流释放内存资源

OutputStream?

介绍基本方法:

void write(int b) throws IOException //写入一个字节的数据

void write(byte[] b) throws IOException //写入一个数组的字节类型数据

void write(byte[] b,int off,int len) throws IOException

void close() throws IOException //关闭流释放内存资源

void flush() throws IOException //  flush 冲刷(冲厕所的时候用这个单词,醉了2333333)这句的意思是就是清空,将输出流中缓冲的数据全部写到目的地。

                                                             需要在调用close()之前调用。为什么需要这个方法呢?因为close()方法是简单粗暴的关闭了水管,直接切断连接。就算水管中还有一些

                                                             水没传过去也是。所以用flush方法,将水管中残存的水先冲到目的地,再调用close()比较科学。

所以良好的编程方式,先写flush()再写close()

 

Reader?

Reader就是读数据,对程序来说就是输入,InputStream。从分类图可以看出来,区别就是一个字节一个字节读还是一个字符一个字符读。

Writer?

也是一样的道理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: