MSDN Library
信息
您所需的主题如下所示。但此主题未包含在此库中。

MemoryStream 类

2013/12/13

创建其后备存储区为内存的流。

System.Object
  System.IO.Stream
    System.IO.MemoryStream

Namespace:  System.IO
程序集:  mscorlib(位于 mscorlib.dll 中)

public class MemoryStream : Stream

MemoryStream 类型公开以下成员。

  名称说明
公共方法MemoryStream()使用初始化为零的可扩展容量初始化 MemoryStream 类的新实例。
公共方法MemoryStream(Byte[])基于指定的字节数组初始化 MemoryStream 类的无法调整大小的新实例。
公共方法MemoryStream(Int32)使用按指定要求初始化的可扩展容量初始化 MemoryStream 类的新实例。
公共方法MemoryStream(Byte[], Boolean)使用按指定要求设置的 CanWrite 属性基于指定的字节数组初始化 MemoryStream 类的无法调整大小的新实例。
公共方法MemoryStream(Byte[], Int32, Int32)基于字节数组的指定区域(索引)初始化 MemoryStream 类的无法调整大小的新实例。
公共方法MemoryStream(Byte[], Int32, Int32, Boolean)使用按指定要求设置的 CanWrite 属性基于字节数组的指定区域初始化 MemoryStream 类的无法调整大小的新实例。
公共方法MemoryStream(Byte[], Int32, Int32, Boolean, Boolean)在按指定要求设置 CanWrite 属性而且能够调用按指定要求设置的 GetBuffer 的情况下,基于字节数组的指定区域初始化 MemoryStream 类的新实例。
返回顶部

  名称说明
公共属性CanRead获取一个值,该值指示当前流是否支持读取。 (重写 Stream.CanRead。)
公共属性CanSeek获取一个值,该值指示当前流是否支持查找。 (重写 Stream.CanSeek。)
公共属性CanTimeout获取一个确定当前流能否超时的值。 (从 Stream 继承。)
公共属性CanWrite获取一个值,该值指示当前流是否支持写入。 (重写 Stream.CanWrite。)
公共属性Capacity获取或设置为该流分配的字节数。
公共属性Length获取流的字节长度。 (重写 Stream.Length。)
公共属性Position获取或设置流中的当前位置。 (重写 Stream.Position。)
公共属性ReadTimeout获取或设置一个值(以毫秒为单位),该值确定流在超时前尝试读取多长时间。 (从 Stream 继承。)
公共属性WriteTimeout获取或设置一个值(以毫秒为单位),该值确定流在超时前尝试写入多长时间。 (从 Stream 继承。)
返回顶部

  名称说明
公共方法BeginRead开始异步读操作。 (从 Stream 继承。)
公共方法BeginWrite开始异步写操作。 (从 Stream 继承。)
公共方法Close关闭当前流并释放与当前流关联的任何资源(如套接字和文件句柄)。 (从 Stream 继承。)
公共方法CopyTo(Stream)从当前流读取所有字节并向目标流写入它们。 (从 Stream 继承。)
公共方法CopyTo(Stream, Int32)从当前流读取所有字节并使用指定缓冲区大小向目标流写入它们。 (从 Stream 继承。)
公共方法CopyToAsync(Stream)从当前流异步读取字节并向另一个流写入它们。 (从 Stream 继承。)
公共方法CopyToAsync(Stream, Int32)从当前流异步读取字节并使用指定缓冲区大小向另一个流写入它们。 (从 Stream 继承。)
公共方法CopyToAsync(Stream, Int32, CancellationToken)从当前流异步读取字节并使用指定缓冲区大小和取消标记向另一个流写入它们。 (从 Stream 继承。)
公共方法Dispose()释放由 Stream 使用的所有资源。 (从 Stream 继承。)
受保护的方法Dispose(Boolean)释放 MemoryStream 类使用的非托管资源,并可以选择释放托管资源。 (重写 Stream.Dispose(Boolean)。)
公共方法EndRead等待挂起的异步读取完成。 (从 Stream 继承。)
公共方法EndWrite结束异步写操作。 (从 Stream 继承。)
公共方法Equals(Object)确定指定的 Object 是否等于当前的 Object (从 Object 继承。)
受保护的方法Finalize允许 Object 在垃圾回收器回收该对象之前尝试释放资源并执行其他清理操作。 (从 Object 继承。)
公共方法Flush重写 Stream.Flush 以便不执行任何操作。 (重写 Stream.Flush()。)
公共方法FlushAsync()异步清除该流的所有缓冲区,并使所有缓冲的数据都写入基础设备。 (从 Stream 继承。)
公共方法FlushAsync(CancellationToken)以异步方式清除此流中的所有缓冲区,并监视取消请求。 (重写 Stream.FlushAsync(CancellationToken)。)
公共方法GetBuffer返回从其创建此流的无符号字节数组。
公共方法GetHashCode用作特定类型的哈希函数。 (从 Object 继承。)
公共方法GetType获取当前实例的 Type (从 Object 继承。)
受保护的方法MemberwiseClone创建当前 Object 的浅表副本。 (从 Object 继承。)
公共方法Read从当前流中读取字节块并将数据写入缓冲区中。 (重写 Stream.Read(Byte[], Int32, Int32)。)
公共方法ReadAsync(Byte[], Int32, Int32)从当前流异步读取字节序列,并将流中的位置向前移动读取的字节数。 (从 Stream 继承。)
公共方法ReadAsync(Byte[], Int32, Int32, CancellationToken)从当前流中异步读取字节序列,在该流中按照读取的字节数向前移动位置,并监视取消请求。 (重写 Stream.ReadAsync(Byte[], Int32, Int32, CancellationToken)。)
公共方法ReadByte从当前流读取一个字节。 (重写 Stream.ReadByte()。)
公共方法Seek设置该流的当前位置为指定值。 (重写 Stream.Seek(Int64, SeekOrigin)。)
公共方法SetLength设置当前流的长度为指定值。 (重写 Stream.SetLength(Int64)。)
公共方法ToArray将流内容写入字节数组,而与 Position 属性无关。
公共方法ToString返回一个字符串,它表示当前的对象。 (从 Object 继承。)
公共方法Write使用从某个缓冲区读取的数据将字节块写入当前流。 (重写 Stream.Write(Byte[], Int32, Int32)。)
公共方法WriteAsync(Byte[], Int32, Int32)将字节序列异步写入当前流,并将流的当前位置向前移动写入的字节数。 (从 Stream 继承。)
公共方法WriteAsync(Byte[], Int32, Int32, CancellationToken)将一个字节序列异步写入当前流,使流中的当前位置向前移动所写入的字节数,并监视取消请求。 (重写 Stream.WriteAsync(Byte[], Int32, Int32, CancellationToken)。)
公共方法WriteByte向流的当前位置写入一个字节。 (重写 Stream.WriteByte(Byte)。)
公共方法WriteTo将该内存流的全部内容写入到另外一个流。
返回顶部

  名称说明
公共扩展方法AsInputStream将 适用于 Windows 商店应用的 .NET 中的托管流转换到 Windows 运行时 中的输入流。 (由 WindowsRuntimeStreamExtensions 定义。)
公共扩展方法AsOutputStream将 适用于 Windows 商店应用的 .NET 中的托管流转换到 Windows 运行时 中的输出流。 (由 WindowsRuntimeStreamExtensions 定义。)
公共扩展方法GetWindowsRuntimeBuffer()重载。 返回 Windows.Storage.Streams.IBuffer 接口,它表示与指定的内存流具有相同的内存。 (由 WindowsRuntimeBufferExtensions 定义。)
公共扩展方法GetWindowsRuntimeBuffer(Int32, Int32)重载。 返回 Windows.Storage.Streams.IBuffer 接口,它表示指定的内存流表示的内存中的区域。 (由 WindowsRuntimeBufferExtensions 定义。)
返回顶部

MemoryStream 类创建具有内存而非磁盘或网络连接作为后备存储区的流。MemoryStream 封装作为无符号字节数组存储的数据,该数据在创建 MemoryStream 对象时初始化,或者该数组可以创建为空数组。可在内存中直接访问这些封装的数据。内存流可降低应用程序中对临时缓冲区和临时文件的需要。

流的当前位置是下一个读取或写入操作可能发生的位置。当前位置可以通过 Seek 方法检索或设置。在创建 MemoryStream 的新实例时,当前位置设置为零。

用无符号字节数组创建的内存流提供无法调整大小的数据流。当使用字节数组时,虽然根据传递到构造函数中的参数可能能够修改现有内容,但既不能追加也不能收缩流。空内存流是可调整大小的,而且可以向其写入和从中读取。

如果将 MemoryStream 对象添加到 ResX 文件或 .resources 文件中,则可在运行时调用 GetStream 方法对其进行检索。

如果将 MemoryStream 对象序列化为资源文件,它将被实际序列化为 UnmanagedMemoryStream。此行为可以提供更好的性能,并可以提供将指针直接指向数据的功能,而不必使用 Stream 方法。

版本说明

Windows Phone

 当应用程序试图在 MemoryStream 对象中存储 Stream.Null 时,不引发 ArrayTypeMismatchException

Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

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

显示:
© 2016 Microsoft