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 中的总字节数。如果可用的字节没有所请求的那么多,总字节数可能小于请求的字节数;或者如果在可读取任何数据前就已到达流的末尾,则为零。
异常
异常类型 | 条件 |
---|---|
array 的长度减去 offset 小于 count。 |
|
array 为 空引用(在 Visual Basic 中为 Nothing)。 |
|
offset 或 count 为负。 |
|
流未打开或为 空引用(在 Visual Basic 中为 Nothing)。 |
|
流不支持读取。 |
|
在流关闭后调用方法。 |
备注
有关创建文件和向文件中写入文本的示例,请参见 如何:向文件写入文本。有关从文件中读取文本的示例,请参见 如何:从文件读取文本。有关读取和写入二进制文件的示例,请参见 如何:对新建的数据文件进行读取和写入。
仅当到达流的末尾时,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