System.IO.MemoryStream.Read 方法

方法描述

从当前流中读取字节块并将数据写入缓冲区中。

语法定义(C# System.IO.MemoryStream.Read 方法 的用法)

public override int Read(
	byte[] buffer,
	int offset,
	int count
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
buffer System-Byte[] 当此方法返回时,包含指定的字节数组,该数组中从 offset 到 (offset + count -1) 之间的值由从当前流中读取的字符替换。
offset System-Int32 buffer 中的从零开始的字节偏移量,从此处开始存储从当前流中的数据。
count System-Int32 最多读取的字节数。
返回值 System.Int32 写入缓冲区中的总字节数。 如果当前可用字节数不到所请求的字节数,则这一总字节数可能小于所请求的字节数,或者如果在读取任何字节前已到达流的末尾,则为零。

提示和注释

此方法重写 Read。

offset 参数给出 buffer 中第一个字节的偏移量,来自当前流的数据写入此处。 count 参数给出可从当前流读取的最大字节数。 返回的值是读取字节的实际数量,或如果到达流的结尾,则该值为零。

如果读操作成功,则流内的当前位置将向前推进读取的字节数。 如果发生异常,则流内的当前位置不变。

仅当到达流的末尾时,Read 方法才会返回零。 在所有其他情况中,Read 总是在返回前从流中读取至少一个字节。 根据定义,如果调用 Read 时流中没有数据可用,则 Read 方法返回零(自动到达流的末尾)。 即使尚未到达流的末尾,实现仍可以随意返回少于所请求的字节。

将 BinaryReader 用于读取基元数据类型。

警告

如果在 buffer 参数中指定的字节数组为 GetBuffer 方法所返回的基础缓冲区,则数组内容将被覆盖,并且不会引发异常。

System.IO.MemoryStream.Read 方法例子

此代码示例摘自为 MemoryStream 类提供的一个更大的示例。

// Read the first 20 bytes from the stream.
byteArray = new byte[memStream.Length];
count = memStream.Read(byteArray, 0, 20);

异常

异常 异常描述
ArgumentNullException buffer 为 null。
ArgumentOutOfRangeException offset 或 count 为负。
ArgumentException 缓冲区长度减去 offset 的结果小于 count。
ObjectDisposedException 当前流实例已关闭。

命名空间

namespace: System.IO

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

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