System.IO为咱们提供了一个抽象类Stream,Stream类支持对字节的读写操做。在Stream类中包括了对异步操做的支持。程序员
既然Stream是抽象类,全部其它流的类就都必须从Steam类中继承。Stream类及其子类共同构成了一个数据源和数据存储的视图,从而封装了操做系统和底层存储的各个细节,使程序员把注意力集中到程序的应用逻辑上来。数组
流包含如下基本操做:安全
读操做(Reading)。即读出流中的数据,把数据存放在另外一种数据结构中,好比数组。网络
写操做(Writting)。即从另外一种数据结构中读出数据,存放至流对象中。数据结构
搜索操做(Seeking)。即从流中的当前位置开始搜索,定位到指定的位置。异步
因为数据视图的不一样,一些流可能不一样时支持以上的全部操做。好比网络流就不支持搜索操做。Stream类提供了CanRead,CanWrite和CanSeek三种属性,来表示流是否支持这些操做。性能
BinaryReader和BinaryWriter这两个类提供了从字符串或原始数据到各类流之间的读写操做。spa
File类的静态方法主要是用于建立FileStream类。一个FileStream类的实例实际上表明一个磁盘文件,它经过Seek()方法进行对文件的随机访问,也同时包含了流的标准输入、标准输出、标准错误等。FileStream默认对文件的打开方式是同步的,但它一样很好地支持异步操做。操作系统
TextReader和TextWriter类都是抽象类。和Stream类的字节形式的输入和输出不一样,它们用于Unicode字符的输入和输出。code
StringReader和StringWriter在字符串中读写字符。
StreamReader和StreamWriter
StreamReader和StreamWriter在流中读写字符。
BufferedStream是为诸如网络 流的其它流添加缓冲的一种流类型。其实,FileStream流自身内部含有缓冲,而MemorySteam流则不须要缓冲。一个BufferStream 类的实例能够由多个其它类型的流复合而成,以达到提升性能的目的。缓冲其实是内存中的一个字节块,利用缓冲能够避免操做系统频繁地到磁盘上读取数据,从而减轻了操做系统的负担。
MemoryStream是一个无缓冲流,它所封装的数据直接放在内存中,所以能够用于快速临时存储、进程间传递信息等。
NetworkSteam
Networksteam表示在互联网络上传递的流。
当使用名字空间System.IO中提供的类时,对存储数据的访问权限必须符合操做系统的安全性要求。
注意:不要使用这些类来编写应用程序对网络文件进行的操做。由于Internet默认的安全政策是不容许对文件直接访问。可使用IsolatedStroage类来处理网络文件
两个都是缓冲区,BufferedStream并非将全部内容都存放到内存中,而MemoryStream则是。BufferedStream必须跟其 他流如FileStream结合使用,而MemoryStream则不用,虽然能够把MemoryStream转换为其余流。