流(Stream)就是指像水流一样长长的一串的东西。
在很多时候,流(Stream)是字节流(Byte Steram)的简称,也就是长长的一串字节,,,,
当然,除了字节流,我们还可以有视频流、音频流、数据流,,,,
流只有一个特征就是连续,流可以没有头可以没有尾,甚至可能没有绝对的位置(因为无头无尾),但是由于流是连续的,所以有相对位置。
流是一个很抽象的概念,只有多用才能理解。
但是流绝对不是一个容器,这是一个典型的误解。容器可以被视为一个流,或者可以用流的方式来读写,但流不是容器。
譬如说,网络流(NetworkStream)就不是一个容器,也正因为流不是一个容器,所以流不存在拷贝。我们可以拷贝文件,拷贝内存,但是不能拷贝一个流。
同理,标准输入输出流显然也不是容器。
如果是说.NET Framework中的Stream对象,其实我觉得他更像一个设备(Device)。这个设备提供或者不提供三个方法:读(Read )、写(Write)、检索(Seek),但是一个设备必须至少提供读或者写中的一个方法。