果要创建成熟的桌面应用程序,那么在用户会话之间保存信息的功能是必不可少的。本章将从.NET Framework的视角来研究一系列与I/O相关的主题。首先研究System.IO命名空间定义的一些重要类型,进而理解怎样以编程方式修改计算机的目录和文件结构。掌握了这些后,接下来的任务就是研究读写基于字符、二进制、字符串、内存的各种数据存储内容的方法。
16.1 研究System.IO命名空间
在.NET Framework中,System.IO命名空间主要包含基于文件(和基于内存)的输入输出(I/O)服务的相关基类库。和其他命名空间一样,System.IO定义了一系列类、接口、枚举、结构和委托。它们大多数包含在mscorlib.dll中,另外有一部分System.IO命名空间的成员则包含在System.dll程序集中(由于Visual Studio 2005会自动为项目添加这些程序集的引用,因此我们可以直接使用)。
System.IO命名空间的多数类型主要用于编程操作物理目录和文件,而另一些类型则提供了从字符串缓冲和内存区域中读写数据的方法。为了让读者了解System.IO功能的概况,表16-1列出了一些主要的(非抽象)类。
表16-1 System.IO命名空间的主要成员
|
非抽象I/O类类型 |
作 用 |
|
BinaryReader BinaryWriter |
这两个类型能够以二进制值存储和读取基本数据类型(整型、布尔型、字符串型和其他类型) |
|
BufferedStream |
这个类型为字节流提供了临时的存储空间,可以以后提交 |
|
Directory DirectoryInfo |
这两个类型用来操作计算机的目录结构。Directory类型主要的功能通过静态方法实现。DirectoryInfo类型则通过一个有效的对象变量来实现类似功能 |
|
DriveInfo |
(.NET 2.0新增)提供计算机驱动器的详细信息 |
|
File FileInfo |
这两个类型用来操作计算机上的一组文件。File类型主要的功能通过静态方法实现,FileInfo类型则通过一个有效的对象变量来实现类似功能 |
|
FileStream |
这个类型实现文件随机访问(比如寻址能力),并以字节流来表示数据 |
|
FileStreamWatcher |
这个类型监控对指定的外部文件的更改 |
|
MemoryStream |
这个类型实现对内存(而不是物理文件)中存储的流数据的随机访问 |
|
Path |
这个类型对包含文件或目录路径信息的System.String类型执行操作。这些操作是与平台无关的 |
|
StreamWriter StreamReader |
这两个类型用来在(从)文件中存储(获取)文本信息。不支持随机文件访问 |
|
StringWriter StringReader |
和StreamWriter/StreamReader类型差不多,这两个类型同样和文本信息打交道,不同的是基层的存储器是字符串缓冲而不是物理文件 |
除了这些类类型,System.IO还定义了许多枚举类型和一组抽象类(Stream、TextReader和TextWriter等),它们为所有派生类定义了共享的多态接口。本章后面有更多有关这些类型的介绍。






