本帖最后由 潘金锋 于 2014-2-10 20:08 编辑
文件一般指存储在硬盘上的字节块。文件可以通过流的形式被读取到内存,或者将内存中的数据以流的形式写入到硬盘文件。
文件流(FileStream)类型实现文件随机访问,并以字节流来表示数据。为基于文件的流提供了抽象Stream成员的实现。这是一个相当原始的流,它只能读取或写入一个字节或者字节数组。其实,我们通常不需要直接和FileStream类型的成员交互,而是使用各种Stream包装类。
.NET流架构主要有三个概念:
- backing stores
- decorators
- adapters
Backing stores是真正实现输入输出的底层,比如文件或者网络连接。它有以下一种或两种功能:
- 可以以字节形式顺序读取的源
- 可以以字节形式顺序写入的目的
Stream类体现了该目的。 Stream类可以分为两类: Backing store streams 如FileStream、NetworkStream Decorator streams(装饰) 这些流实现了流数据的特定形式的转换,比如缓冲、压缩、加密等。 如DeflateStream、CryptoStream
Backing store和decorator streams都只处理字节,但程序常常在更高级别运行,比如文本或者XML。 Adapters(适配)通过将流包裹在类中实现了文本或其他格式与字节的连接。
Adapter包裹了一个流,这一点类似于decorator。但与decorator不同的是,adapter本身不是流,它只是彻底地对用户屏蔽了操作字节的方法。
FileStream 类型实现文件随机访问,并以字节流来表示数据。为基于文件的流提供了抽象Stream成员的实现。这是一个相当原始的流,它只能读取或写入一个字节或者字节数组。其实,我们通常不需要直接和FileStream类型的成员交互,而是使用各种Stream包装类。
Stream Adapters 流适配 流仅仅处理字节;而读写诸如字符串,整数或XML元素等数据类型,则需要使用适配器。.NET Framework提供了:
- Text adapters (针对字符串和字符数据)
- Binary adapters (针对诸如int, bool, string, float原始类型)
- XML adapters
System.IO.TextWriter和System.IO.TextReader。这两个是抽象类。 System.IO.StreamWriter和System.IO.StreamReader。这两个类分别继承自TextWriter和TextReader。用来向(从)文件中存储(获取)文本信息。不支持随机文件访问。当需要读写基于字符的数据(比如字符串)的时候,StreamReader和StreamWriter类就非常有用。 System.IO.StringWriter和System.IO.StringReader。这两个类分别继承自TextWriter和TextReader。它们分别用于向字符串写入字符或字符串以及从字符串读取字符或字符串。使用StringWriter和StringReader类型,我们可以将文本信息当做内存中的字符一样来处理。 System.IO.BinaryWriter和System.IO.BinaryReader。这两个类用于读写数据流中类型为.NET基本类型的数据。
|