BufferedStream.Read 方法

将字节从当前缓冲流复制到数组。

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

语法

声明
Public Overrides Function Read ( _
    <InAttribute> <OutAttribute> array As Byte(), _
    offset As Integer, _
    count As Integer _
) As Integer
用法
Dim instance As BufferedStream
Dim array As Byte()
Dim offset As Integer
Dim count As Integer
Dim returnValue As Integer

returnValue = instance.Read(array, offset, count)
public override int Read (
    [InAttribute] [OutAttribute] byte[] array,
    int offset,
    int count
)
public:
virtual int Read (
    [InAttribute] [OutAttribute] array<unsigned char>^ array, 
    int offset, 
    int count
) override
public int Read (
    /** @attribute InAttribute() */ /** @attribute OutAttribute() */ byte[] array, 
    int offset, 
    int count
)
public override function Read (
    array : byte[], 
    offset : int, 
    count : int
) : int

参数

  • array
    将字节复制到的缓冲区。
  • offset
    缓冲区中的字节偏移量,从此处开始读取字节。
  • count
    要读取的字节数。

返回值

读入 array 中的总字节数。如果可用的字节没有所请求的那么多,总字节数可能小于请求的字节数;或者如果在可读取任何数据前就已到达流的末尾,则为零。

异常

异常类型 条件

ArgumentException

array 的长度减去 offset 小于 count。

ArgumentNullException

array 为 空引用(在 Visual Basic 中为 Nothing)。

ArgumentOutOfRangeException

offset 或 count 为负。

IOException

流未打开或为 空引用(在 Visual Basic 中为 Nothing)。

NotSupportedException

流不支持读取。

ObjectDisposedException

在流关闭后调用方法。

备注

有关创建文件和向文件中写入文本的示例,请参见 如何:向文件写入文本。有关从文件中读取文本的示例,请参见 如何:从文件读取文本。有关读取和写入二进制文件的示例,请参见 如何:对新建的数据文件进行读取和写入

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

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

示例

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

' Receive data using the BufferedStream.
Console.WriteLine("Receiving data using BufferedStream.")
bytesReceived = 0
startTime = DateTime.Now
While bytesReceived < numberOfLoops * receivedData.Length
    bytesReceived += bufStream.Read( _
        receivedData, 0, receivedData.Length)
End While
bufferedTime = DateTime.Now.Subtract(startTime).TotalSeconds
Console.WriteLine("{0} bytes received in {1} " & _
    "seconds." & vbCrLf, _
    bytesReceived.ToString(), _
    bufferedTime.ToString("F1"))
// Receive data using the BufferedStream.
Console.WriteLine("Receiving data using BufferedStream.");
bytesReceived = 0;
startTime = DateTime.Now;
while(bytesReceived < numberOfLoops * receivedData.Length)
{
    bytesReceived += bufStream.Read(
        receivedData, 0, receivedData.Length);
}
bufferedTime = (DateTime.Now - startTime).TotalSeconds;
Console.WriteLine("{0} bytes received in {1} seconds.\n",
    bytesReceived.ToString(), 
    bufferedTime.ToString("F1"));
// Receive data using the BufferedStream.
Console::WriteLine(  "Receiving data using BufferedStream." );
bytesReceived = 0;
startTime = DateTime::Now;
while ( bytesReceived < numberOfLoops * receivedData->Length )
{
   bytesReceived += bufStream->Read( receivedData, 0, receivedData->Length );
}

bufferedTime = (DateTime::Now - startTime).TotalSeconds;
Console::WriteLine( "{0} bytes received in {1} seconds.\n", bytesReceived.ToString(), bufferedTime.ToString(  "F1" ) );
// Receive data using the BufferedStream.
Console.WriteLine("Receiving data using BufferedStream.");
bytesReceived = 0;
startTime = DateTime.get_Now();
while((bytesReceived < numberOfLoops * receivedData.length)) {
    bytesReceived += bufStream.Read(receivedData,0,receivedData.length);
}
bufferedTime =
    ((DateTime.get_Now()).Subtract(startTime)).get_TotalSeconds();
Console.WriteLine("{0} bytes received in {1} seconds.\n",
    (new Integer(bytesReceived)).ToString(),
    ((System.Double) bufferedTime).ToString("F1"));

平台

Windows 98、Windows 2000 SP4、Windows Millennium Edition、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

请参见

参考

BufferedStream 类
BufferedStream 成员
System.IO 命名空间
BlockCopy
CanRead
Write

其他资源

文件和流 I/O
如何:从文件读取文本
如何:向文件写入文本