BufferedStream.Read Methode

Definitie

Overloads

Name Description
Read(Span<Byte>)

Kopieert bytes van de huidige gebufferde stroom naar een bytespanne en verplaatst de positie binnen de gebufferde stroom door het aantal gelezen bytes.

Read(Byte[], Int32, Int32)

Hiermee kopieert u bytes van de huidige gebufferde stroom naar een matrix.

Read(Span<Byte>)

Bron:
BufferedStream.cs
Bron:
BufferedStream.cs
Bron:
BufferedStream.cs
Bron:
BufferedStream.cs
Bron:
BufferedStream.cs

Kopieert bytes van de huidige gebufferde stroom naar een bytespanne en verplaatst de positie binnen de gebufferde stroom door het aantal gelezen bytes.

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

Parameters

destination
Span<Byte>

Een geheugengebied. Wanneer deze methode wordt geretourneerd, wordt de inhoud van deze regio vervangen door de bytes die zijn gelezen uit de huidige bron.

Retouren

Het totale aantal bytes dat in de buffer is gelezen. Dit kan kleiner zijn dan het aantal bytes dat is toegewezen in de buffer als dat aantal bytes momenteel niet beschikbaar is, of nul (0) als het einde van de stream is bereikt.

Opmerkingen

Gebruik de CanRead eigenschap om te bepalen of het huidige exemplaar leesopties ondersteunt. Gebruik de ReadAsync methode om asynchroon te lezen vanuit de huidige stroom.

Implementaties van deze methode lezen maximaal bytes uit buffer.Length de huidige stream en slaan ze op in buffer. De huidige positie in de stream wordt geavanceerd door het aantal gelezen bytes; Als er echter een uitzondering optreedt, blijft de huidige positie binnen de stroom ongewijzigd. Implementaties retourneren het aantal bytes dat is gelezen. De implementatie wordt geblokkeerd totdat ten minste één byte aan gegevens kan worden gelezen, in het geval dat er geen gegevens beschikbaar zijn. Read retourneert alleen 0 wanneer er geen gegevens meer in de stroom staan en niet meer wordt verwacht (zoals een gesloten socket of einde van het bestand). Een implementatie is gratis om minder bytes te retourneren dan aangevraagd, zelfs als het einde van de stream niet is bereikt.

Gebruiken BinaryReader voor het lezen van primitieve gegevenstypen.

Van toepassing op

Read(Byte[], Int32, Int32)

Bron:
BufferedStream.cs
Bron:
BufferedStream.cs
Bron:
BufferedStream.cs
Bron:
BufferedStream.cs
Bron:
BufferedStream.cs

Hiermee kopieert u bytes van de huidige gebufferde stroom naar een matrix.

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

Parameters

bufferarray
Byte[]
offset
Int32

De byte-offset in de buffer waarop bytes moeten worden gelezen.

count
Int32

Het aantal te lezen bytes.

Retouren

Het totale aantal bytes dat is gelezen in array. Dit kan kleiner zijn dan het aantal aangevraagde bytes als er momenteel niet veel bytes beschikbaar zijn of 0 als het einde van de stream is bereikt voordat gegevens kunnen worden gelezen.

Uitzonderingen

De lengte van array min offset is kleiner dan count.

array is null.

offset of count is negatief.

De stream is niet geopend of is null.

De stream biedt geen ondersteuning voor lezen.

Methoden werden aangeroepen nadat de stream is gesloten.

Voorbeelden

Dit codevoorbeeld maakt deel uit van een groter voorbeeld voor de BufferedStream klasse.

// 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"))

Opmerkingen

De Read methode retourneert alleen 0 als het einde van de stream is bereikt. In alle andere gevallen Read leest u altijd ten minste één byte uit de stream voordat u terugkeert. Als er geen gegevens uit de stream beschikbaar zijn bij een aanroep naar Read, retourneert de Read methode 0 (het einde van de stream wordt automatisch bereikt). Een implementatie is gratis om minder bytes te retourneren dan aangevraagd, zelfs als het einde van de stream niet is bereikt.

Gebruiken BinaryReader voor het lezen van primitieve gegevenstypen.

Zie ook

Van toepassing op