BufferedStream.Read Metod

Definition

Överlagringar

Name Description
Read(Span<Byte>)

Kopierar byte från den aktuella buffrade strömmen till ett byteintervall och flyttar positionen inom den buffrade strömmen med antalet lästa byte.

Read(Byte[], Int32, Int32)

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

Read(Span<Byte>)

Källa:
BufferedStream.cs
Källa:
BufferedStream.cs
Källa:
BufferedStream.cs
Källa:
BufferedStream.cs
Källa:
BufferedStream.cs

Kopierar byte från den aktuella buffrade strömmen till ett byteintervall och flyttar positionen inom den buffrade strömmen med antalet lästa byte.

public:
 override int Read(Span<System::Byte> destination);
public override int Read(Span<byte> destination);
override this.Read : Span<byte> -> int
Public Overrides Function Read (destination As Span(Of Byte)) As Integer

Parametrar

destination
Span<Byte>

En region med minne. När den här metoden returnerar ersätts innehållet i den här regionen med byteen som lästs från den aktuella källan.

Returer

Det totala antalet byte som lästs in i bufferten. Detta kan vara mindre än antalet byte som allokerats i bufferten om så många byte för närvarande inte är tillgängliga eller noll (0) om strömmens slut har nåtts.

Kommentarer

Använd egenskapen CanRead för att avgöra om den aktuella instansen stöder läsning. ReadAsync Använd metoden för att läsa asynkront från den aktuella strömmen.

Implementeringar av den här metoden läser upp maximalt buffer.Length antal byte från den aktuella strömmen och lagrar dem i buffer. Den aktuella positionen i dataströmmen avanceras av antalet lästa byte. Men om ett undantag inträffar förblir den aktuella positionen i dataströmmen oförändrad. Implementeringar returnerar antalet lästa byte. Implementeringen blockeras tills minst en byte data kan läsas, i händelse av att inga data är tillgängliga. Read returnerar endast 0 när det inte finns fler data i dataströmmen och inget mer förväntas (till exempel en sluten socket eller filslut). 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

Read(Byte[], Int32, Int32)

Källa:
BufferedStream.cs
Källa:
BufferedStream.cs
Källa:
BufferedStream.cs
Källa:
BufferedStream.cs
Källa:
BufferedStream.cs

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

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

Parametrar

bufferarray
Byte[]
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.

Se även

Gäller för