System.IO.Stream 类
方法描述
提供字节序列的一般视图。
语法定义(C# System.IO.Stream 类 的用法)
[SerializableAttribute] [ComVisibleAttribute(true)] public abstract class Stream : MarshalByRefObject, IDisposable
构造函数
构造函数名称 | 构造函数描述 |
---|---|
Stream | 初始化 Stream 类的新实例。 |
成员/方法
方法名称 | 方法描述 |
---|---|
BeginRead | 开始异步读操作。 |
BeginWrite | 开始异步写操作。 |
Close | 关闭当前流并释放与之关联的所有资源(如套接字和文件句柄)。 |
CopyTo(Stream) | 从当前流中读取字节并将其写入到目标流中。 |
CopyTo(Stream, Int32) | 从当前流中读取所有字节并将其写入到目标流中(使用指定的缓冲区大小)。 |
CreateObjRef | 创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (继承自 MarshalByRefObject。) |
CreateWaitHandle | 已过时。分配 WaitHandle 对象。 |
Dispose() | 释放由 Stream 占用的所有资源。 |
Dispose(Boolean) | 释放由 Stream 占用的非托管资源,还可以另外再释放托管资源。 |
EndRead | 等待挂起的异步读取完成。 |
EndWrite | 结束异步写操作。 |
Equals(Object) | 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。) |
Finalize | 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。) |
Flush | 当在派生类中重写时,将清除该流的所有缓冲区,并使得所有缓冲数据被写入到基础设备。 |
GetHashCode | 用作特定类型的哈希函数。 (继承自 Object。) |
GetLifetimeService | 检索控制此实例的生存期策略的当前生存期服务对象。 (继承自 MarshalByRefObject。) |
GetType | 获取当前实例的 Type。 (继承自 Object。) |
InitializeLifetimeService | 获取控制此实例的生存期策略的生存期服务对象。 (继承自 MarshalByRefObject。) |
MemberwiseClone() | 创建当前 Object 的浅表副本。 (继承自 Object。) |
MemberwiseClone(Boolean) | 创建当前 MarshalByRefObject 对象的浅表副本。 (继承自 MarshalByRefObject。) |
ObjectInvariant | 基础结构。提供对 Contract 的支持。 |
Read | 当在派生类中重写时,从当前流读取字节序列,并将此流中的位置提升读取的字节数。 |
ReadByte | 从流中读取一个字节,并将流内的位置向前推进一个字节,如果已到达流的末尾,则返回 -1。 |
Seek | 当在派生类中重写时,设置当前流中的位置。 |
SetLength | 当在派生类中重写时,设置当前流的长度。 |
Synchronized | 在指定的 Stream 对象周围创建线程安全(同步)包装。 |
ToString | 返回表示当前对象的字符串。 (继承自 Object。) |
Write | 当在派生类中重写时,向当前流中写入字节序列,并将此流中的当前位置提升写入的字节数。 |
WriteByte | 将一个字节写入流内的当前位置,并将流内的位置向前推进一个字节。 |
提示和注释
流涉及三个基本操作:
可以读取流。 读取是从流到数据结构(如字节数组)的数据传输。
可以写入流。 写入是从数据结构到流的数据传输。
流可以支持查找。 查找是对流内的当前位置进行的查询和修改。 查找功能取决于流具有的后备存储区类型。 例如,网络流没有当前位置的统一概念,因此一般不支持查找。
Stream 是所有流的抽象基类。 流是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道或者 TCP/IP 套接字。 Stream 类及其派生类提供这些不同类型的输入和输出的一般视图,使程序员不必了解操作系统和基础设备的具体细节。
根据基础数据源或储存库,流可能只支持这些功能中的一部分。 通过使用 CanRead、CanWrite 和 CanSeek 属性,应用程序可以查询流的功能。
Read 和 Write 方法读写各种不同格式的数据。 对于支持查找的流,使用 Seek 和 SetLength 方法以及 Position 和 Length 属性可查询和修改流的当前位置和长度。
有些流实现执行基础数据的本地缓冲以提高性能。 对于这样的流,Flush 方法可用于清除所有内部缓冲区并确保将所有数据写入基础数据源或储存库。
在 Stream 调用 Close 可清空任何缓存的数据,从本质上为您调用 Flush。 Close 还释放操作系统资源(如文件句柄、网络连接或用于任何内部缓冲的内存)。 BufferedStream 类提供了将一个经过缓冲的流环绕另一个流的功能,以便提高读写性能。
如果需要不带后备存储区(即位存储桶)的流,请使用 Null。
对实现者的说明
在实现 Stream 的派生类时,必须提供 Read 和 Write 方法的实现。 异步方法 BeginRead、EndRead、BeginWrite 和 EndWrite 通过同步方法 Read 和 Write 实现。 同样,Read 和 Write 的实现也将与异步方法一起正常工作。 ReadByte 和 WriteByte 的默认实现创建一个新的单元素字节数组,然后调用 Read 和 Write 的实现。 当从 Stream 派生时,如果有内部字节缓冲区,则强烈建议重写这些方法以访问内部缓冲区,这样性能将得到显著提高。 还必须提供 CanRead、CanSeek、CanWrite、Flush、Length、Position、Seek 和 SetLength 的实现。
不要重写 Close 方法,而应将所有 Stream 清理逻辑放入 Dispose 方法中。 有关更多信息,请参见 实现 Dispose 方法。
Topic
Location
如何:向文件写入文本.NET Framework:编程基础
如何:从文件读取文本.NET Framework:编程基础
如何:向文件写入文本.NET Framework:编程基础
如何:从文件读取文本.NET Framework:编程基础
System.IO.Stream 类例子
线程安全
此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。
版本信息
.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1 受以下版本支持:
适用平台
Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。