BufferedStream.Read Methode

Definition

Überlädt

Read(Span<Byte>)

Kopiert Bytes aus dem gepufferten Stream in eine Bytespanne und verschiebt die Position im gepufferten Stream um die Anzahl der gelesenen Bytes.Copies bytes from the current buffered stream to a byte span and advances the position within the buffered stream by the number of bytes read.

Read(Byte[], Int32, Int32)

Kopiert Bytes aus dem aktuellen gepufferten Stream in ein Array.Copies bytes from the current buffered stream to an array.

Read(Span<Byte>)

Kopiert Bytes aus dem gepufferten Stream in eine Bytespanne und verschiebt die Position im gepufferten Stream um die Anzahl der gelesenen Bytes.Copies bytes from the current buffered stream to a byte span and advances the position within the buffered stream by the number of bytes read.

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 Bereich im Arbeitsspeicher.A region of memory. Bei der Rückgabe dieser Methode werden die Inhalte dieses Bereichs durch die aus der aktuellen Quelle gelesenen Bytes ersetzt.When this method returns, the contents of this region are replaced by the bytes read from the current source.

Gibt zurück

Int32

Die Gesamtanzahl der in den Puffer gelesenen Bytes.The total number of bytes read into the buffer. Dies kann weniger als die Anzahl der im Puffer zugeordneten Bytes sein, wenn diese Anzahl an Bytes derzeit nicht verfügbar ist, oder 0 (null), wenn das Ende des Streams erreicht ist.This can be less than the number of bytes allocated in the buffer if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.

Hinweise

Verwenden Sie die- CanRead Eigenschaft, um zu bestimmen, ob die aktuelle Instanz Lesevorgänge unterstütztUse the CanRead property to determine whether the current instance supports reading. Verwenden Sie die- ReadAsync Methode, um asynchron aus dem aktuellen Stream zu lesen.Use the ReadAsync method to read asynchronously from the current stream.

Implementierungen dieser Methode lesen eine maximale Anzahl von buffer.Length Bytes aus dem aktuellen Stream und speichern Sie in buffer .Implementations of this method read a maximum of buffer.Length bytes from the current stream and store them in buffer. Die aktuelle Position innerhalb des Streams wird um die Anzahl der gelesenen Bytes erweitert. Wenn jedoch eine Ausnahme auftritt, bleibt die aktuelle Position im Stream unverändert.The current position within the stream is advanced by the number of bytes read; however, if an exception occurs, the current position within the stream remains unchanged. Implementierungen geben die Anzahl der gelesenen Bytes zurück.Implementations return the number of bytes read. Die-Implementierung wird blockiert, bis mindestens ein Byte der Daten gelesen werden kann, wenn keine Daten verfügbar sind.The implementation will block until at least one byte of data can be read, in the event that no data is available. Read gibt 0 (null) nur dann zurück, wenn keine weiteren Daten im Stream vorhanden sind und nicht mehr erwartet wird (z. b. ein geschlossener Socket oder ein Dateiende).Read returns 0 only when there is no more data in the stream and no more is expected (such as a closed socket or end of file). Eine-Implementierung kann weniger Bytes zurückgeben als angefordert werden, auch wenn das Ende des Streams nicht erreicht wurde.An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached.

Verwenden Sie BinaryReader zum Lesen primitiver Datentypen.Use BinaryReader for reading primitive data types.

Gilt für:

Read(Byte[], Int32, Int32)

Kopiert Bytes aus dem aktuellen gepufferten Stream in ein Array.Copies bytes from the current buffered stream to an array.

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

Parameter

array
Byte[]

Der Puffer, in den Bytes kopiert werden sollen.The buffer to which bytes are to be copied.

offset
Int32

Der Byteoffset im Puffer, ab dem mit dem Lesen von Bytes begonnen werden soll.The byte offset in the buffer at which to begin reading bytes.

count
Int32

Die Anzahl der zu lesenden Bytes.The number of bytes to be read.

Gibt zurück

Int32

Die Anzahl der insgesamt in das array gelesenen Bytes.The total number of bytes read into array. Diese kann kleiner sein als die Anzahl der angeforderten Bytes, wenn derzeit nicht entsprechend viele Bytes verfügbar sind, oder 0, wenn das Ende des Streams erreicht ist, bevor Daten gelesen werden können.This can be less than the number of bytes requested if that many bytes are not currently available, or 0 if the end of the stream has been reached before any data can be read.

Ausnahmen

Die Länge von array minus offset ist kleiner als count.Length of array minus offset is less than count.

array ist null.array is null.

offset oder count ist ein negativer Wert.offset or count is negative.

Der Stream ist nicht geöffnet oder ist null.The stream is not open or is null.

Lesevorgänge werden vom Stream nicht unterstützt.The stream does not support reading.

Es wurden Methoden aufgerufen, nachdem der Stream geschlossen wurde.Methods were called after the stream was closed.

Beispiele

Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die-Klasse bereitgestellt wird BufferedStream .This code example is part of a larger example provided for the BufferedStream class.

// 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;

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.
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 (null) nur dann zurück, wenn das Ende des Streams erreicht ist.The Read method will return 0 only if the end of the stream is reached. In allen anderen Fällen Read liest vor der Rückgabe immer mindestens ein Byte aus dem Datenstrom.In all other cases, Read always reads at least one byte from the stream before returning. Definitionsgemäß Read Read gibt die Methode "0" zurück (das Ende des Streams wird automatisch erreicht), wenn beim Abrufen von keine Daten aus dem Stream verfügbar sind.By definition, if no data is available from the stream upon a call to Read, the Read method returns 0 (the end of the stream is reached automatically). Eine-Implementierung kann weniger Bytes zurückgeben als angefordert werden, auch wenn das Ende des Streams nicht erreicht wurde.An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached.

Verwenden Sie BinaryReader zum Lesen primitiver Datentypen.Use BinaryReader for reading primitive data types.

Siehe auch

Gilt für: