流就是读一点数据,处理一点点数据 很多时候,流(Stream)是字节流(Byte Stream)的简称,也就是长长的一串字节。除了字节流,还有视频流、音频流、数据流、比特流、对象流
一切能被读写的都是文件,流是文件的抽象。也可以说流是指数据
流的特征:比如视频流,无论从哪里开始读,都能读出完整的视频信息;如果是字节流,不管从哪里开始读,都能读出字节。 这就是流无头无尾连续不断的特征 流可以被流式读取,或流式写入(按顺序读取一段,按顺序写入一段,中间没有空隙)
如果没有流,所有的数据都用二进制来表示。当一个4GB的视频要播放的话需要全部载入内存,就会很慢,所以采用从硬盘(或者网络)读取一点,播放一点,这就是采用流。
返回数据的一种模式 有“流模式” “缓存模式”
流可以暂停 可以取消(下文件的时候 可以暂停 可以取消)
编程里面流一般有两个工作模式:(以作为一个流处理器的视角)
一是“流动模式”,就是说数据源源不断地从上游而来,你只要不断地处理即可。但是每道工序消耗的时间不同,如果你处理不过来,数据就累积在你的缓冲区里面,越来越多,直到你的缓冲区爆掉;(相当于 Push 模式)
二是“非流动模式”,数据也会来,但是你要手动从流中提取数据,你不提取数据就存留在上游的发送缓冲区里,最后上游的发送缓冲区爆掉了。(相当于 Pull 模式)
流的实现需要考虑流的“溢出”