Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Stream.Read-Methode: (Byte[], Int32, Int32)

 

Veröffentlicht: Oktober 2016

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.

Namespace:   System.IO
Assembly:  mscorlib (in mscorlib.dll)

public abstract int Read(
	byte[] buffer,
	int offset,
	int count
)

Parameter

buffer
Type: System.Byte[]

Ein Bytearray. 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.

offset
Type: System.Int32

Der nullbasierte Byteoffset im buffer, ab dem die aus dem aktuellen Stream gelesenen Daten gespeichert werden.

count
Type: System.Int32

Die maximale Anzahl an Bytes, die aus dem aktuellen Stream gelesen werden sollen.

Rückgabewert

Type: System.Int32

Die Gesamtanzahl der in den Puffer gelesenen Bytes. 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.

Exception Condition
ArgumentException

Die Summe von offset und count ist größer als die Pufferlänge.

ArgumentNullException

buffer ist null.

ArgumentOutOfRangeException

offset oder count ist ein negativer Wert.

IOException

Ein E/A-Fehler tritt auf.

NotSupportedException

Lesevorgänge werden vom Stream nicht unterstützt.

ObjectDisposedException

Es wurden Methoden aufgerufen, nachdem der Stream geschlossen wurde.

Verwenden der CanRead -Eigenschaft bestimmt, ob die aktuelle Instanz Lesevorgänge unterstützt. Verwenden der ReadAsync -Methode asynchron aus dem aktuellen Stream lesen.

Implementierungen dieser Methode liest maximal count Bytes aus dem aktuellen stream und speichert diese im buffer beginnend 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. Implementierungen geben die Anzahl der gelesenen Bytes zurück. Die Implementierung blockiert, bis mindestens ein Byte an Daten gelesen werden kann, die keine Daten verfügbar sind. ReadGibt 0 zurück, nur dann, wenn keine Daten mehr in den Stream vorhanden ist und nicht mehr (z. B. ein geschlossener Socket oder ein Dateiende) erwartet wird. Eine Implementierung kann weniger Bytes als angefordert zurückgeben, auch wenn nicht das Ende des Streams erreicht ist.

Verwendung BinaryReader zum Lesen von primitiven Datentypen.

Das folgende Beispiel zeigt, wie Sie Read einen Block von Daten zu 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);
    }
}

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: