Stream.Read Stream.Read Stream.Read Stream.Read Method

Definition

Überlädt

Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>)

Liest beim Überschreiben in einer abgeleiteten Klasse eine Folge von Bytes aus dem aktuellen Stream und erhöht die Position im Stream um die Anzahl der gelesenen Bytes.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32)

Liest beim Überschreiben in einer abgeleiteten Klasse eine Folge von Bytes aus dem aktuellen Stream und erhöht die Position im Stream um die Anzahl der gelesenen Bytes.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>)

Liest beim Überschreiben in einer abgeleiteten Klasse eine Folge von Bytes aus dem aktuellen Stream und erhöht die Position im Stream um die Anzahl der gelesenen Bytes.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

public:
 virtual int Read(Span<System::Byte> buffer);
public virtual int Read (Span<byte> buffer);
abstract member Read : Span<byte> -> int
override this.Read : Span<byte> -> int
Public Overridable Function Read (buffer As Span(Of Byte)) As Integer

Parameter

buffer
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

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 der CanRead Eigenschaft, um zu bestimmen, ob die aktuelle Instanz Lesevorgänge unterstützt.Use the CanRead property to determine whether the current instance supports reading. Verwenden der ReadAsync Methode zum asynchronen Lesen aus dem aktuellen Stream.Use the ReadAsync method to read asynchronously from the current stream.

Implementierungen dieser Methode lesen maximal buffer.Length Bytes aus dem aktuellen stream und speichert 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 im Stream wird durch die Anzahl der gelesenen Bytes verschoben. Wenn eine Ausnahme auftritt, bleibt die aktuelle Position im Stream jedoch 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 werden die Anzahl der gelesenen Bytes zurück.Implementations return the number of bytes read. Die Implementierung blockiert, bis mindestens ein Byte an Daten gelesen werden kann, die 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 zurück, nur, wenn keine weitere Daten vorhanden, in den Stream sind und nicht mehr (z. B. ein geschlossener Socket oder ein Dateiende) erwartet wird.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 ist weniger Bytes als angefordert zurückgeben, selbst wenn Sie nicht das Ende des Streams erreicht wurde.An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached.

Verwendung BinaryReader zum Lesen von primitiven Datentypen.Use BinaryReader for reading primitive data types.

Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32)

Liest beim Überschreiben in einer abgeleiteten Klasse eine Folge von Bytes aus dem aktuellen Stream und erhöht die Position im Stream um die Anzahl der gelesenen Bytes.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

public:
 abstract int Read(cli::array <System::Byte> ^ buffer, int offset, int count);
public abstract int Read (byte[] buffer, int offset, int count);
abstract member Read : byte[] * int * int -> int
Public MustOverride Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer

Parameter

buffer
Byte[]

Ein Bytearray.An array of bytes. Nach dem Beenden dieser Methode enthält der Puffer das angegebene Bytearray mit den Werten zwischen offset und (offset + count - 1), die durch aus der aktuellen Quelle gelesene Bytes ersetzt wurden.When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source.

offset
Int32 Int32 Int32 Int32

Der nullbasierte Byteoffset im buffer, ab dem die aus dem aktuellen Stream gelesenen Daten gespeichert werden.The zero-based byte offset in buffer at which to begin storing the data read from the current stream.

count
Int32 Int32 Int32 Int32

Die maximale Anzahl an Bytes, die aus dem aktuellen Stream gelesen werden sollen.The maximum number of bytes to be read from the current stream.

Gibt zurück

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

Ausnahmen

Die Summe von offset und count ist größer als die Pufferlänge.The sum of offset and count is larger than the buffer length.

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

Ein E/A-Fehler tritt auf.An I/O error occurs.

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

Das folgende Beispiel zeigt, wie Sie mit Read einen Block von Daten zu lesen.The following example shows how to use Read to read a block of data.

using namespace System;
using namespace System::IO;

public ref class Block
{
public:
    static void Main()
    {
        Stream^ s = gcnew MemoryStream();
        for (int i = 0; i < 100; i++)
        {
            s->WriteByte((Byte)i);
        }
        s->Position = 0;

        // Now read s into a byte buffer.
        array<Byte>^ bytes = gcnew array<Byte>(s->Length);
        int numBytesToRead = (int) s->Length;
        int numBytesRead = 0;
        while (numBytesToRead > 0)
        {
            // Read may return anything from 0 to 10.
            int n = s->Read(bytes, numBytesRead, 10);
            // The end of the file is reached.
            if (n == 0)
            {
                break;
            }
            numBytesRead += n;
            numBytesToRead -= n;
        }
        s->Close();
        // numBytesToRead should be 0 now, and numBytesRead should
        // equal 100.
        Console::WriteLine("number of bytes read: {0:d}", numBytesRead);
    }
};

int main()
{
    Block::Main();
}
using System;
using System.IO;

public class Block
{
    public static void Main()
    {
        Stream s = new MemoryStream();
        for (int i = 0; i < 122; i++)
        {
            s.WriteByte((byte)i);
        }
        s.Position = 0;

        // Now read s into a byte buffer with a little padding.
        byte[] bytes = new byte[s.Length + 10];
        int numBytesToRead = (int)s.Length;
        int numBytesRead = 0;
        do
        {
            // Read may return anything from 0 to 10.
            int n = s.Read(bytes, numBytesRead, 10);
            numBytesRead += n;
            numBytesToRead -= n;
        } while (numBytesToRead > 0);
        s.Close();
       
        Console.WriteLine("number of bytes read: {0:d}", numBytesRead);
    }
}
Imports System
Imports System.IO

Public Class Block
    Public Shared Sub Main()
        Dim s As Stream = New MemoryStream()
        For i As Integer = 0 To 121
            s.WriteByte(CType(i, Byte))
        Next i
        s.Position = 0

        ' Now read s into a byte buffer that is padded slightly.
        Dim bytes(s.Length + 10) As Byte
        Dim numBytesToRead As Integer = s.Length
        Dim numBytesRead As Integer = 0
        Dim n As Integer
        Do
            ' Read may return anything from 0 to 10.
            n = s.Read(bytes, numBytesRead, 10)
            ' The end of the file is reached.
            numBytesRead += n
            numBytesToRead -= n
        Loop While numBytesToRead > 0

        s.Close()
    
        Console.WriteLine("number of bytes read: {0:d}", numBytesRead)
    End Sub
End Class

Hinweise

Verwenden der CanRead Eigenschaft, um zu bestimmen, ob die aktuelle Instanz Lesevorgänge unterstützt.Use the CanRead property to determine whether the current instance supports reading. Verwenden der ReadAsync Methode zum asynchronen Lesen aus dem aktuellen Stream.Use the ReadAsync method to read asynchronously from the current stream.

Implementierungen dieser Methode lesen maximal count Bytes aus dem aktuellen stream und speichert sie in buffer beginnend bei offset.Implementations of this method read a maximum of count bytes from the current stream and store them in buffer beginning at offset. Die aktuelle Position im Stream wird durch die Anzahl der gelesenen Bytes verschoben. Wenn eine Ausnahme auftritt, bleibt die aktuelle Position im Stream jedoch 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 werden die Anzahl der gelesenen Bytes zurück.Implementations return the number of bytes read. Die Implementierung blockiert, bis mindestens ein Byte an Daten gelesen werden kann, die 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 zurück, nur, wenn keine weitere Daten vorhanden, in den Stream sind und nicht mehr (z. B. ein geschlossener Socket oder ein Dateiende) erwartet wird.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 ist weniger Bytes als angefordert zurückgeben, selbst wenn Sie nicht das Ende des Streams erreicht wurde.An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached.

Verwendung BinaryReader zum Lesen von primitiven Datentypen.Use BinaryReader for reading primitive data types.

Siehe auch

Gilt für: