文件和流 I/O (输入/输出) 引用数据传输或转到或者是存储媒介。 在 .NET framework 中, System.IO 命名空间包含启用读取和写入,同步和异步的类型,在数据流和文件。 这些命名空间还包含执行压缩和解压缩文件中通过管道和串行端口启用通信的类型和类型。
文件是具有永久存储区字节的有序的、名为集合。 当您处理文件时,将目录路径、磁盘存储、文件和目录名一起使用。 相反,流是一个可用于读取和写入一个后备存储,可以是之一多种存储媒介字节 (例如,磁盘或内存) 的序列。 除磁盘外存,就象在多种后备存储,除文件流之外,如 network、内存和管道流,有多种流。
在 System.IO 可以使用命名空间中类型与文件和目录进行交互。 例如,您可以获取和设置文件和目录的属性,并检索基于搜索条件和目录的集合文件。
下面是一些常用的文件和目录选件类:
-
File -用于创建,复制,删除,移动和打开文件的静态方法,即,并帮助创建一 FileStream 对象。
-
FileInfo -用于创建,复制,删除,移动和打开文件提供实例方法,即,并帮助创建一 FileStream 对象。
-
Directory -用于创建,移动和枚举提供静态方法通过目录和子目录。
-
DirectoryInfo -用于创建,移动和枚举提供实例方法通过目录和子目录。
-
Path -用于处理目录字符串的方法和属性以跨平台的方式。
除了使用这些选件类外,Visual Basic 用户可以使用方法,并 Microsoft.VisualBasic.FileIO.FileSystem 提供的属性执行文件 I/O 类。
请参见 如何:复制目录、 如何:创建目录列表 和 如何:枚举目录和文件。
抽象基类 Stream 支持读取和写入字节。 表示流的所有选件类从 Stream 选件类继承。 Stream 选件类及其派生类提供数据源和储存库一个常见视图,并独立从操作系统和基础设备的具体细节的程序员。
流涉及三个基本操作:
-
读取-从流中传输的数据传输到数据结构,例如字节。
-
编写-定向到流中传输的数据从数据源。
-
查找-查询和修改在流中的当前位置。
根据基础数据源或储存库,流可能只支持一些功能。 例如, PipeStream 选件类不支持查找。 CanRead、 CanWrite和流的 CanSeek 属性指定流支持的操作。
下面是一些常用的流选件类:
-
FileStream –读取和写入到的文件。
-
IsolatedStorageFileStream –读取和写入到文件在独立存储。
-
MemoryStream –读取和写入内存为后备存储。
-
BufferedStream –提高读写操作性能。
-
NetworkStream –读写操作在网络套接字。
-
PipeStream –读写操作在匿名和命名管道。
-
CryptoStream –的链接到加密转换数据的流。
有关的示例与流使用异步,请参见 异步文件 I/O。
System.IO 命名空间用于读取流的编码字符和写入还提供了类型对流。 通常,流用于字节输入和输出。 读取器和编写器类型句柄编码字符的转换。字节的,因此流可以完成操作。 每个读取器和编写器选件类与流,可以通过选件类的 BaseStream 属性进行检索。
下面是一些常用的读取器和编写器选件类:
-
BinaryReader 和 BinaryWriter –读取和写入的基元数据类型作为二进制值。
-
StreamReader 和 StreamWriter –读取和写入来使用编码值的来回转换字节字符。
-
StringReader 和 StringWriter –读取和写入的字符和从字符串。
-
TextReader 和 TextWriter –充当抽象基类用作读取和写入字符和字符串的其他读取器和编写器,但是,二进制数据。
请参见 如何:从文件读取文本、 如何:向文件写入文本、 如何:从字符串中读取字符 和 如何:向字符串写入字符。
读取或写入大量数据会占用大量资源。 如果应用程序需要保持响应给用户,应执行这些任务异步。 同步 I/O 操作,UI 线程阻塞,直至大量占用资源的操作完成。 请使用异步 I/O 操作,则开发 Windows 应用商店 apps 防止创建您的应用程序停止工作的感觉时。
异步成员在其名称包含 Async,例如 CopyToAsync、 FlushAsync、 ReadAsync和 WriteAsync 方法。 将 async 和 await 关键字将这些方法。
有关更多信息,请参见 异步文件 I/O。
压缩引用减少一个文件的大小接近存储的。 解压缩是提取压缩文件的内容处理,因此它们以一个可用的格式。 System.IO.Compression 命名空间包含压缩和解压缩的文件和流类型。
通常使用以下选件类,当压缩和解压缩文件和流时:
-
ZipArchive –用于创建和检索项在 ZIP 存档中。
-
ZipArchiveEntry –表示的压缩文件。
-
ZipFile 应用程序,提取和打开的压缩的程序包。
-
ZipFileExtensions –创建和提取的项在压缩的程序包。
-
DeflateStream –压缩和解压缩的使用 deflate 算法的流。
-
GZipStream –压缩和解压缩的流。gzip 数据格式。
请参见 如何:压缩和解压缩文件。
独立存储是一种数据存储机制,它在代码与保存的数据之间定义了标准化的关联方式,从而提供隔离性和安全性。 存储提供由用户、程序集和的虚拟文件系统 (可选) 域隔离。 当应用程序无权访问用户文件时,独立存储尤其有用。 可以某些保存设置或文件是由计算机的安全策略控制的应用程序中。
独立存储 Windows 应用商店 apps 不可用;相反,应使用应用程序数据选件类在 Windows.Storage 命名空间。 有关更多信息,请 应用程序数据 参见 windows Dev 中心。
通常使用以下选件类,在实现独立存储中:
-
IsolatedStorage –用于独立存储实现提供基类。
-
IsolatedStorageFile –提供包含文件和目录的独立存储区域。
-
IsolatedStorageFileStream -公开在独立存储中的文件。
请参见 独立存储。
适用于 Windows 应用商店应用的 .NET 包含许多读取和写入的类型至流;但是,此设置不包含任何 .NET framework I/O 类型。
请注意的一些重要差异,在使用 I/O 操作在 Windows 应用商店 apps 时:
-
类型尤其是对于文件操作相关,例如 File, FileInfo、 Directory 和 DirectoryInfo,在 适用于 Windows 应用商店应用的 .NET不包括。 相反,应使用类型在 Windows.StorageWindows 运行时的命名空间,如 StorageFile 和 StorageFolder。
-
独立存储不可用;相反,使用 应用程序数据。
-
使用异步方法,如 ReadAsync 和 WriteAsync,防止块 UI 线程。
-
基于路径的压缩类型 ZipFile 和 ZipFileExtensions 不可用。 相反,请使用命名空间中的类型 Windows.Storage.Compression
有关 Windows 应用商店 app 的 I/O 操作的更多信息,请 快速入门:读取和写入文件 参见 windows Dev 中心。
在 System.IO 命名空间时使用选件类,您必须在操作系统安全性要求例如访问控制列表 (acl) (ACLs) 控制对文件和目录的访问。 此要求是在所有 FileIOPermission 要求之外的要求。 您可以管理 ACL 程序模型。 有关更多信息,请参见 如何:添加或移除访问控制列表项和 ACL 技术概述。
默认安全策略值从在用户的计算机上访问文件防止 Internet 或 Intranet 应用程序。 因此,不要使用需要一个路径到物理文件,在编写代码时将下载 Internet 或 Intranet 上 I/O 选件类。 相反,对于旧版 .NET framework 应用程序使用 独立存储 或用于 Windows 应用商店 apps 使用 应用程序数据。
只有 + 当构造流时,执行安全检查。 因此,不打开流然后不要将其传递给受信程度较低的代码或应用程序域。