.NET Framework 文件 I/O 和文件系统基础知识 (Visual Basic)
System.IO 命名空间包含 File 和 Directory 类,这些类提供操作文件和目录的 .NET Framework 功能。 因为这些对象的方法是静态或共享成员,所以可以直接使用它们,而无需先创建类的实例。 FileInfo 和 DirectoryInfo 类与上面这两个类相关联,并将为 My 功能的用户所熟悉。 若要使用这些类,您必须通过在受影响代码的开头处包含 Imports 语句来完全限定其名称或者导入适当的命名空间。 有关更多信息,请参见 Imports 语句(.NET 命名空间和类型)。
流的定义
.NET Framework 使用流来支持读取和写入文件。 您可以将流视为一组连续的一维数据,包含开头和结尾,并且其中的游标指示了流中的当前位置。
流操作
流中包含的数据可能来自内存、文件或 TCP/IP 套接字。 流包含可应用于自身的基本操作:
读取。 您可以读取流,即将数据从流传输到数据结构(如字符串或字节数组)中。
写入。 您可以写入流,即将数据从数据源传输到流中。
查找。 您可以查询和修改您在流中的位置。
有关更多信息,请参见编写流。
流的类型
在 .NET Framework 中,流由 Stream 类来表示,该类构成了所有其他流的抽象类。 不能直接创建 Stream 类的实例,但是必须使用它实现的其中一个类。
有许多类型的流,但在处理文件输入/输出 (I/O) 时,最重要的类型为 FileStream 类和 IsolatedStorageFileStream 类,前者提供读取和写入文件的方式,后者提供在独立存储中创建文件和目录的方式。 可在处理文件 I/O 时使用的其他流包括:
下表列出了通常使用流完成的任务:
若要 |
请参见 |
读取和写入数据文件 |
|
从 XML 文件中读取 |
|
创建流编写器以向文件中写入文本 |
|
从文件中读取文本 |
|
向文件写入文本 |
|
从字符串中读取字符 |
|
向字符串写入字符 |
|
加密数据 |
|
解密数据 |
文件访问权限和特性
您可以控制如何创建、打开文件以及与 FileAccess、FileMode 和 FileShare 枚举共享文件,这些枚举中包含由 FileStream 类的构造函数使用的标志。 例如,当您打开或创建新的 FileStream 时,FileMode 枚举允许指定是否为追加而打开文件、指定的文件不存在时是否创建新文件、是否覆盖文件等等。
使用 FileAttributes 枚举可以收集文件特定的信息。 FileAttributes 枚举返回文件的存储特性,如它是否为压缩、加密、隐藏、只读、存档、目录、系统文件或临时文件。
下表列出了涉及文件访问权限和文件特性的任务:
若要 |
请参见 |
打开日志文件并追加文本到其中 |
|
确定文件的特性 |
文件权限
可以使用 FileIOPermission 类来完成对文件及目录访问权限的控制。 这对于使用 Web 窗体的开发人员特别重要。默认情况下,Web 窗体在名为 ASPNET 的特殊本地用户帐户的上下文内运行,而该用户帐户是在安装 ASP.NET 和 .NET Framework 时创建的。 当此类应用程序要求对资源的访问权限时,ASPNET 用户帐户具有有限的权限,这样可以防止用户执行一些操作,如从 Web 应用程序写入到文件中。 有关更多信息,请参见安全权限、请求权限 和 FileIOPermission。
下表列出了涉及文件权限的任务。
若要 |
请参见 |
请求内置的权限 |
|
请求 XML 编码的权限 |
独立文件存储
独立存储的用途是尝试解决在处理用户或代码可能对其缺少必要的权限的文件时所产生的问题。 独立存储为每个用户分配一个数据隔离舱,其中可以容纳一个或多个存储区。 存储区可以按用户和程序集彼此隔离。 只有创建了存储区的用户和程序集才拥有对该存储区的访问权限。 存储区用作完整的虚拟文件系统,您可以在一个存储区中创建和操作目录及文件。
下表列出了通常与独立文件存储相关联的任务。
若要 |
请参见 |
创建独立存储区 |
|
枚举独立存储区 |
|
删除独立存储区 |
|
在独立存储中创建文件或目录 |
|
在独立存储中查找文件 |
|
读取或写入独立存储中的文件 |
|
删除独立存储中的文件或目录 |
文件事件
使用 FileSystemWatcher 组件可以监视您系统上或您拥有网络访问权限的任何计算机上的文件和目录中的更改。 例如,如果文件被修改,您可能想要向用户发送一条警报,告知已发生更改。 当发生更改时,将引发一个或多个事件,然后将其存储在缓冲区中,并传递给 FileSystemWatcher 组件进行处理。