MSDN程序员
抽象基类 Stream 支持读取和写入字节。Stream 集成了异步支持。其默认实现根据其相应的异步方法来定义同步读取和写入,反之亦然。算法
全部表示流的类都是从 Stream 类继承的。Stream 类及其派生类提供数据源和储存库的通常视图,使程序员没必要了解操做系统和基础设备的具体细节。编程
流涉及三个基本操做:数组
能够从流读取。读取是从流到数据结构(如字节数组)的数据传输。缓存
能够向流写入。写入是从数据源到流的数据传输。安全
流能够支持查找。查找是对流内的当前位置进行的查询和修改。网络
根据基础数据源或储存库,流可能只支持这些功能中的一部分。例如,NetworkStreams 不支持查找。Stream 的 CanRead、CanWrite 和 CanSeek 属性及其派生类决定不一样的流所支持的操做。数据结构
有关通用 I/O 任务的列表,请参见通用 I/O 任务。异步
![]() |
---|
Visual Basic 用户能够选择使用由 My.Computer.FileSystem 对象提供的方法和属性进行文件 I/O。有关更多信息,请参见 My.Computer.FileSystem 对象。socket |
Directory 提供经过目录和子目录进行建立、移动和枚举的静态方法。DirectoryInfo 类提供实例方法。
DirectoryInfo 提供经过目录和子目录进行建立、移动和枚举的实例方法。Directory 类提供静态方法。
DriveInfo 提供访问有关驱动器的信息的实例方法。
File 提供用于建立、复制、删除、移动和打开文件的静态方法,并协助建立 FileStream。FileInfo 类提供实例方法。
FileInfo 提供用于建立、复制、删除、移动和打开文件的实例方法,并协助建立 FileStream。File 类提供静态方法。
FileStream 支持经过其 Seek 方法随机访问文件。默认状况下,FileStream 以同步方式打开文件,但它也支持异步操做。File 包含静态方法,而 FileInfo 包含实例方法。
FileSystemInfo 是 FileInfo 和 DirectoryInfo 的抽象基类。
Path 提供以跨平台的方式处理目录字符串的方法和属性。
DeflateStream 提供使用 Deflate 算法压缩和解压缩流的方法和属性。
GZipStream 提供压缩和解压缩流的方法和属性。默认状况下,此类使用与 DeflateStream 类相同的算法,但能够扩展到使用其余压缩格式。
SerialPort 提供控制串行端口文件资源的方法和属性。
File、FileInfo、DriveInfo、Path、Directory 和 DirectoryInfo 是密封(在 Microsoft Visual Basic 中为 NotInheritable)类。能够建立这些类的新实例,但它们不能有派生类。
BinaryReader 和 BinaryWriter 从 Streams 读取或向 Streams 写入编码的字符串和基元数据类型。
StreamReader 经过使用 Encoding 进行字符和字节的转换,从 Streams 中读取字符。StreamReader 具备一个构造函数,该构造函数根据是否存在专用于 Encoding 的 preamble(例如一个字节顺序标记)来尝试肯定给定 Stream 的正确 Encoding 是什么。
StreamWriter 经过使用 Encoding 将字符转换为字节,向 Streams 写入字符。
StringReader 从 Strings 中读取字符。StringReader 容许您用相同的 API 来处理 Strings,所以您的输出能够是 String 或以任何编码表示的 Stream。
StringWriter 向 Strings 写入字符。StringWriter 容许您用相同的 API 来处理 Strings,所以您的输出能够是 String 或以任何编码表示的 Stream。
TextReader 是 StreamReader 和 StringReader 的抽象基类。抽象 Stream 类的实现用于字节输入和输出,而 TextReader 的实现用于 Unicode 字符输出。
TextWriter 是 StreamWriter 和 StringWriter 的抽象基类。抽象 Stream 类的实现用于字节输入和输出,而 TextWriter 的实现用于 Unicode 字符输出。
BufferedStream 是向另外一个 Stream(例如 NetworkStream)添加缓冲的 Stream。((FileStream 内部已具备缓冲,MemoryStream 不须要缓冲。)BufferedStream 能够围绕某些类型的流来构成以提升读写性能。缓冲区是内存中的字节块,用于缓存数据,从而减小对操做系统的调用次数。
CryptoStream 将数据流连接到加密转换。虽然 CryptoStream 是从 Stream 派生的,但它不属于 System.IO 命名空间,而是在 System.Security.Cryptography 命名空间中。
MemoryStream 是一个非缓冲的流,能够在内存中直接访问它的封装数据。该流没有后备存储,可用做临时缓冲区。
NetworkStream 表示网络链接上的 Stream。虽然 NetworkStream 是从 Stream 派生的,但它不属于 System.IO 命名空间,而是在 System.Net.Sockets 命名空间中。
当在 System.IO 命名空间中使用类时,要使访问被容许,则必须知足诸如访问控制列表 (ACL) 等操做系统安全性要求。该要求是在全部 FileIOPermission 要求以外的要求。
![]() |
---|
能够以编程方式管理 ACL。有关更多信息,请参见如何:添加或移除访问控制列表项和 ACL 技术概述。 |
![]() |
---|
Internet 和 Intranet 的默认安全策略不容许访问文件。所以,若是您在编写将经过 Internet 下载的代码,则不要使用常规的非隔离存储 I/O 类。请改用独立存储。 |
![]() |
---|
当文件或网络流打开时,只有在构造流时才执行安全检查。所以,在将这些流分发给受信度较低的代码或应用程序域时,请格外当心。 |