Freigeben über


Stream.Read Methode

Definition

Überlädt

Name Beschreibung
Read(Span<Byte>)

Wenn sie in einer abgeleiteten Klasse überschrieben werden, liest sie eine Bytesequenz aus dem aktuellen Datenstrom und wechselt die Position innerhalb des Datenstroms um die Anzahl der gelesenen Bytes.

Read(Byte[], Int32, Int32)

Wenn sie in einer abgeleiteten Klasse überschrieben werden, liest sie eine Bytesequenz aus dem aktuellen Datenstrom und wechselt die Position innerhalb des Datenstroms um die Anzahl der gelesenen Bytes.

Read(Span<Byte>)

Quelle:
Stream.cs
Quelle:
Stream.cs
Quelle:
Stream.cs
Quelle:
Stream.cs
Quelle:
Stream.cs

Wenn sie in einer abgeleiteten Klasse überschrieben werden, liest sie eine Bytesequenz aus dem aktuellen Datenstrom und wechselt die Position innerhalb des Datenstroms um die Anzahl der gelesenen Bytes.

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 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 Größe des Puffers sein, wenn viele Bytes derzeit nicht verfügbar sind, oder Null (0), wenn die Länge des Puffers null oder 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. Wenn mehr als null Bytes angefordert werden, schließt die Implementierung den Vorgang erst ab, wenn mindestens ein Byte von Daten gelesen werden kann (wenn null Bytes angefordert wurden, werden einige Implementierungen möglicherweise ähnlich erst abgeschlossen, wenn mindestens ein Byte verfügbar ist, aber keine Daten aus dem Datenstrom in einem solchen Fall verwendet werden). Read gibt 0 nur zurück, wenn null Bytes angefordert wurden oder wenn keine weiteren Daten im Datenstrom vorhanden sind und nicht mehr erwartet wird (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:
Stream.cs
Quelle:
Stream.cs
Quelle:
Stream.cs
Quelle:
Stream.cs
Quelle:
Stream.cs

Wenn sie in einer abgeleiteten Klasse überschrieben werden, liest sie eine Bytesequenz aus dem aktuellen Datenstrom und wechselt die Position innerhalb des Datenstroms um die Anzahl der gelesenen Bytes.

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. Wenn diese Methode zurückgegeben wird, enthält der Puffer das angegebene Bytearray mit den Werten zwischen offset und (offset + count - 1), die durch die aus der aktuellen Quelle gelesenen Bytes ersetzt werden.

offset
Int32

Der nullbasierte Byte-Offset, in buffer dem die Daten gespeichert werden sollen, die aus dem aktuellen Datenstrom gelesen werden.

count
Int32

Die maximale Anzahl von Bytes, die aus dem aktuellen Datenstrom gelesen werden sollen.

Gibt zurück

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

Ausnahmen

Die Summe und offsetcount ist größer als die Pufferlänge.

buffer ist null.

offset oder count ist negativ.

Ein E/A-Fehler tritt auf.

Der Datenstrom unterstützt das Lesen nicht.

Methoden wurden aufgerufen, nachdem der Datenstrom geschlossen wurde.

Beispiele

Das folgende Beispiel zeigt, wie Read Sie einen Datenblock lesen.

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.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 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 count Bytes aus dem aktuellen Datenstrom und speichern sie beginnend buffer bei offset. 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. Wenn mehr als null Bytes angefordert werden, schließt die Implementierung den Vorgang erst ab, wenn mindestens ein Byte von Daten gelesen werden kann (einige Implementierungen sind möglicherweise erst abgeschlossen, wenn mindestens ein Byte verfügbar ist, auch wenn null Bytes angefordert wurden, aber in einem solchen Fall werden keine Daten aus dem Datenstrom verwendet). Read gibt 0 nur zurück, wenn null Bytes angefordert wurden oder wenn keine weiteren Daten im Datenstrom vorhanden sind und nicht mehr erwartet wird (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 .

Weitere Informationen

Gilt für: