BufferedStream.Read(Byte[], Int32, Int32) Metod

Definition

Kopierar byte från den aktuella buffrade strömmen till en matris.

public:
 override int Read(cli::array <System::Byte> ^ array, int offset, int count);
public override int Read(byte[] array, int offset, int count);
override this.Read : byte[] * int * int -> int
Public Overrides Function Read (array As Byte(), offset As Integer, count As Integer) As Integer

Parametrar

array
Byte[]

Bufferten som byte ska kopieras till.

offset
Int32

Byteförskjutningen i bufferten där byte ska börja läsas.

count
Int32

Antalet byte som ska läsas.

Returer

Det totala antalet byte som lästs in i array. Detta kan vara mindre än antalet byte som begärs om så många byte inte är tillgängliga för närvarande, eller 0 om strömmens slut har nåtts innan data kan läsas.

Undantag

Längden på array minus offset är mindre än count.

array är null.

offset eller count är negativ.

Strömmen är inte öppen eller är null.

Strömmen stöder inte läsning.

Metoder anropades efter att strömmen stängdes.

Exempel

Det här kodexemplet är en del av ett större exempel för BufferedStream klassen.

// Receive data using the BufferedStream.
Console.WriteLine("Receiving data using BufferedStream.");
bytesReceived = 0;
startTime = DateTime.Now;

int numBytesToRead = receivedData.Length;

while (numBytesToRead > 0)
{
    // Read may return anything from 0 to numBytesToRead.
    int n = bufStream.Read(receivedData,0, receivedData.Length);
    // The end of the file is reached.
    if (n == 0)
        break;
    bytesReceived += n;
    numBytesToRead -= n;
}

bufferedTime = (DateTime.Now - startTime).TotalSeconds;
Console.WriteLine("{0} bytes received in {1} seconds.\n",
    bytesReceived.ToString(),
    bufferedTime.ToString("F1"));
// Receive data using the BufferedStream.
printfn "Receiving data using BufferedStream."
bytesReceived <- 0
let startTime = DateTime.Now

let mutable numBytesToRead = receivedData.Length

let mutable broken = false
while not broken && numBytesToRead > 0 do
    // Read may return anything from 0 to numBytesToRead.
    let n = bufStream.Read(receivedData,0, receivedData.Length)
    // The end of the file is reached.
    if n = 0 then
        broken <- true
    else
        bytesReceived <- bytesReceived + n
        numBytesToRead <- numBytesToRead - n

let bufferedTime = (DateTime.Now - startTime).TotalSeconds
printfn $"{bytesReceived} bytes received in {bufferedTime:F1} seconds.\n"
' Receive data using the BufferedStream.
Console.WriteLine("Receiving data using BufferedStream.")
bytesReceived = 0
startTime = DateTime.Now

Dim numBytesToRead As Integer = receivedData.Length
Dim n As Integer
Do While numBytesToRead > 0

    'Read my return anything from 0 to numBytesToRead
    n = bufStream.Read(receivedData, 0, receivedData.Length)
    'The end of the file is reached.
    If n = 0 Then
        Exit Do
    End If

    bytesReceived += n
    numBytesToRead -= n
Loop

bufferedTime = DateTime.Now.Subtract(startTime).TotalSeconds
Console.WriteLine("{0} bytes received in {1} " & _
    "seconds." & vbCrLf, _
    bytesReceived.ToString(), _
    bufferedTime.ToString("F1"))

Kommentarer

Metoden Read returnerar endast 0 om strömmens slut nås. I alla andra fall Read läser du alltid minst en byte från strömmen innan den returneras. Om inga data per definition är tillgängliga från strömmen vid ett anrop till ReadRead returnerar metoden 0 (slutet av dataströmmen nås automatiskt). En implementering kan returnera färre byte än vad som begärts även om dataströmmens slut inte har nåtts.

Används BinaryReader för att läsa primitiva datatyper.

Gäller för

Se även