Freigeben über


BufferedStream.Read Methode

Definition

Überlädt

Name Beschreibung
Read(Span<Byte>)

Kopiert Bytes aus dem aktuellen gepufferten Datenstrom in eine Bytespanne und wechselt die Position innerhalb des gepufferten Datenstroms um die Anzahl der gelesenen Bytes.

Read(Byte[], Int32, Int32)

Kopiert Bytes aus dem aktuellen gepufferten Datenstrom in ein Array.

Read(Span<Byte>)

Quelle:
BufferedStream.cs
Quelle:
BufferedStream.cs
Quelle:
BufferedStream.cs
Quelle:
BufferedStream.cs
Quelle:
BufferedStream.cs

Kopiert Bytes aus dem aktuellen gepufferten Datenstrom in eine Bytespanne und wechselt die Position innerhalb des gepufferten Datenstroms um die Anzahl der gelesenen 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

Parameter

destination
Span<Byte>

Ein Speicherbereich. Wenn diese Methode zurückgegeben wird, werden die Inhalte dieses Bereichs durch die aus der aktuellen Quelle gelesenen Bytes ersetzt.

Gibt zurück

Die Gesamtanzahl der in den Puffer gelesenen Bytes. Dies kann kleiner als die Anzahl der im Puffer zugewiesenen Bytes sein, wenn viele Bytes derzeit nicht verfügbar sind, oder Null (0), wenn das Ende des Datenstroms erreicht wurde.

Hinweise

Verwenden Sie die CanRead Eigenschaft, um zu ermitteln, ob die aktuelle Instanz das Lesen unterstützt. Verwenden Sie die ReadAsync Methode, um asynchron aus dem aktuellen Datenstrom zu lesen.

Implementierungen dieser Methode lesen maximal buffer.Length Bytes aus dem aktuellen Datenstrom und speichern sie in buffer. Die aktuelle Position innerhalb des Datenstroms wird um die Anzahl der gelesenen Bytes erweitert; Wenn jedoch eine Ausnahme auftritt, bleibt die aktuelle Position innerhalb des Datenstroms unverändert. Implementierungen geben die Anzahl der gelesenen Bytes zurück. Die Implementierung wird blockiert, bis mindestens ein Byte von Daten gelesen werden kann, falls keine Daten verfügbar sind. Read gibt 0 nur zurück, wenn im Datenstrom keine weiteren Daten vorhanden sind und keine weiteren Daten erwartet werden (z. B. ein geschlossener Socket oder ein Ende der Datei). Eine Implementierung kann weniger Bytes zurückgeben als angefordert, auch wenn das Ende des Datenstroms nicht erreicht wurde.

Wird zum Lesen primitiver Datentypen verwendet BinaryReader .

Gilt für:

Read(Byte[], Int32, Int32)

Quelle:
BufferedStream.cs
Quelle:
BufferedStream.cs
Quelle:
BufferedStream.cs
Quelle:
BufferedStream.cs
Quelle:
BufferedStream.cs

Kopiert Bytes aus dem aktuellen gepufferten Datenstrom in ein Array.

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

Parameter

bufferarray
Byte[]
offset
Int32

Der Byteoffset im Puffer, bei dem mit dem Lesen von Bytes begonnen werden soll.

count
Int32

Die Anzahl der zu lesenden Bytes.

Gibt zurück

Die Gesamtanzahl der Bytes, in die gelesen wird array. Dies kann kleiner als die Anzahl der angeforderten Bytes sein, wenn viele Bytes derzeit nicht verfügbar sind, oder 0, wenn das Ende des Datenstroms erreicht wurde, bevor Daten gelesen werden können.

Ausnahmen

Die Länge des array Minuszeichens offset ist kleiner als count.

array ist null.

offset oder count ist negativ.

Der Datenstrom ist nicht geöffnet oder ist null.

Der Datenstrom unterstützt das Lesen nicht.

Methoden wurden aufgerufen, nachdem der Datenstrom geschlossen wurde.

Beispiele

Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die BufferedStream Klasse bereitgestellt wird.

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

Hinweise

Die Read Methode gibt 0 nur zurück, wenn das Ende des Datenstroms erreicht ist. In allen anderen Fällen Read wird vor der Rückgabe immer mindestens ein Byte aus dem Datenstrom gelesen. Wenn bei einem Aufruf Readvon keine Daten aus dem Datenstrom verfügbar sind, gibt die Read Methode 0 zurück (das Ende des Datenstroms wird automatisch erreicht). Eine Implementierung kann weniger Bytes zurückgeben als angefordert, auch wenn das Ende des Datenstroms nicht erreicht wurde.

Wird zum Lesen primitiver Datentypen verwendet BinaryReader .

Weitere Informationen

Gilt für: