Stream 类
此文章由人工翻译。 将光标移到文章的句子上,以查看原文。
译文
原文

Stream 类

提供字节序列的一般视图。

命名空间:  System.IO
程序集:  mscorlib(在 mscorlib.dll 中)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class Stream : MarshalByRefObject, 
	IDisposable

Stream 类型公开以下成员。

  名称说明
受保护的方法由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifStream初始化 Stream 类的新实例。
页首

  名称说明
公共属性由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifCanRead当在派生类中重写时,获取指示当前流是否支持读取的值。
公共属性由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifCanSeek当在派生类中重写时,获取指示当前流是否支持查找功能的值。
公共属性由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifCanTimeout获取一个值,该值确定当前流是否可以超时。
公共属性由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifCanWrite当在派生类中重写时,获取指示当前流是否支持写入功能的值。
公共属性由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifLength当在派生类中重写时,获取用字节表示的流长度。
公共属性由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifPosition当在派生类中重写时,获取或设置当前流中的位置。
公共属性由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifReadTimeout获取或设置一个值(以毫秒为单位),该值确定流在超时前尝试读取多长时间。
公共属性由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifWriteTimeout获取或设置一个值(以毫秒为单位),该值确定流在超时前尝试写入多长时间。
页首

  名称说明
公共方法由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifBeginRead开始异步读操作。
公共方法由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifBeginWrite开始异步写操作。
公共方法由 XNA Framework 提供支持Close关闭当前流并释放与之关联的所有资源(如套接字和文件句柄)。
公共方法CopyTo(Stream)从当前流中读取字节并将其写入到目标流中。
公共方法CopyTo(Stream, Int32)从当前流中读取所有字节并将其写入到目标流中(使用指定的缓冲区大小)。
公共方法CreateObjRef创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (继承自 MarshalByRefObject。)
受保护的方法由 XNA Framework 提供支持CreateWaitHandle 已过时。分配 WaitHandle 对象。
公共方法由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifDispose()释放由 Stream 占用的所有资源。
受保护的方法由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifDispose(Boolean)释放由 Stream 占用的非托管资源,还可以另外再释放托管资源。
公共方法由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifEndRead等待挂起的异步读取完成。
公共方法由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifEndWrite结束异步写操作。
公共方法由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifEquals(Object)确定指定的 Object 是否等于当前的 Object (继承自 Object。)
受保护的方法由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifFinalize允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
公共方法由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifFlush当在派生类中重写时,将清除该流的所有缓冲区,并使得所有缓冲数据被写入到基础设备。
公共方法由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifGetHashCode用作特定类型的哈希函数。 (继承自 Object。)
公共方法GetLifetimeService检索控制此实例的生存期策略的当前生存期服务对象。 (继承自 MarshalByRefObject。)
公共方法由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifGetType获取当前实例的 Type (继承自 Object。)
公共方法InitializeLifetimeService获取控制此实例的生存期策略的生存期服务对象。 (继承自 MarshalByRefObject。)
受保护的方法由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifMemberwiseClone()创建当前 Object 的浅表副本。 (继承自 Object。)
受保护的方法MemberwiseClone(Boolean)创建当前 MarshalByRefObject 对象的浅表副本。 (继承自 MarshalByRefObject。)
受保护的方法ObjectInvariant基础结构。提供对 Contract 的支持。
公共方法由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifRead当在派生类中重写时,从当前流读取字节序列,并将此流中的位置提升读取的字节数。
公共方法由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifReadByte从流中读取一个字节,并将流内的位置向前推进一个字节,如果已到达流的末尾,则返回 -1。
公共方法由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifSeek当在派生类中重写时,设置当前流中的位置。
公共方法由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifSetLength当在派生类中重写时,设置当前流的长度。
公共方法静态成员Synchronized在指定的 Stream 对象周围创建线程安全(同步)包装。
公共方法由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifToString返回表示当前对象的字符串。 (继承自 Object。)
公共方法由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifWrite当在派生类中重写时,向当前流中写入字节序列,并将此流中的当前位置提升写入的字节数。
公共方法由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifWriteByte将一个字节写入流内的当前位置,并将流内的位置向前推进一个字节。
页首

  名称说明
公共字段静态成员由 XNA Framework 提供支持8f86tw9e.PortableClassLibrary(zh-cn,VS.100).gifNull无后备存储区的 Stream
页首

流涉及三个基本操作:

  1. 可以读取流。 读取是从流到数据结构(如字节数组)的数据传输。

  2. 可以写入流。 写入是从数据结构到流的数据传输。

  3. 流可以支持查找。 查找是对流内的当前位置进行的查询和修改。 查找功能取决于流具有的后备存储区类型。 例如,网络流没有当前位置的统一概念,因此一般不支持查找。

Stream 是所有流的抽象基类。 流是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道或者 TCP/IP 套接字。 Stream 类及其派生类提供这些不同类型的输入和输出的一般视图,使程序员不必了解操作系统和基础设备的具体细节。

根据基础数据源或储存库,流可能只支持这些功能中的一部分。 通过使用 CanReadCanWriteCanSeek 属性,应用程序可以查询流的功能。

Read Write 方法读写各种不同格式的数据。 对于支持查找的流,使用 SeekSetLength 方法以及 PositionLength 属性可查询和修改流的当前位置和长度。

有些流实现执行基础数据的本地缓冲以提高性能。 对于这样的流,Flush 方法可用于清除所有内部缓冲区并确保将所有数据写入基础数据源或储存库。

Stream 调用 Close 可清空任何缓存的数据,从本质上为您调用 Flush Close 还释放操作系统资源(如文件句柄、网络连接或用于任何内部缓冲的内存)。 BufferedStream 类提供了将一个经过缓冲的流环绕另一个流的功能,以便提高读写性能。

如果需要不带后备存储区(即位存储桶)的流,请使用 Null

对实现者的说明

在实现 Stream 的派生类时,必须提供 ReadWrite 方法的实现。 异步方法 BeginReadEndReadBeginWriteEndWrite 通过同步方法 ReadWrite 实现。 同样,ReadWrite 的实现也将与异步方法一起正常工作。 ReadByte WriteByte 的默认实现创建一个新的单元素字节数组,然后调用 ReadWrite 的实现。 当从 Stream 派生时,如果有内部字节缓冲区,则强烈建议重写这些方法以访问内部缓冲区,这样性能将得到显著提高。 还必须提供 CanReadCanSeekCanWriteFlushLengthPositionSeekSetLength 的实现。

不要重写 Close 方法,而应将所有 Stream 清理逻辑放入 Dispose 方法中。 有关更多信息,请参见 实现 Dispose 方法

TopicLocation
如何:向文件写入文本.NET Framework:编程基础
如何:从文件读取文本.NET Framework:编程基础
如何:向文件写入文本.NET Framework:编程基础
如何:从文件读取文本.NET Framework:编程基础

.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 系统要求

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

社区附加资源

添加
显示:
© 2016 Microsoft