Auf Englisch lesen

Freigeben über


FileStream.Read Methode

Definition

Überlädt

Read(Byte[], Int32, Int32)

Liest einen Byteblock aus dem Stream und schreibt die Daten in einen angegebenen Puffer.

Read(Span<Byte>)

Liest eine Bytesequenz aus dem aktuellen Dateidatenstrom und setzt die Position in diesem Dateidatenstrom um die Anzahl der gelesenen Bytes nach vorn.

Read(Byte[], Int32, Int32)

Quelle:
FileStream.cs
Quelle:
FileStream.cs
Quelle:
FileStream.cs

Liest einen Byteblock aus dem Stream und schreibt die Daten in einen angegebenen Puffer.

C#
public override int Read (byte[] array, int offset, int count);
C#
public override int Read (byte[] buffer, int offset, int count);

Parameter

arraybuffer
Byte[]

Enthält nach dem Beenden dieser Methode das angegebene Bytearray mit den Werten zwischen offset und (offset + count - 1), die durch die aus der aktuellen Quelle gelesenen Bytes ersetzt wurden.

offset
Int32

Das Byteoffset in array, an dem die gelesenen Bytes platziert werden.

count
Int32

Die maximale Anzahl der zu lesenden Bytes.

Gibt zurück

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 Streamende erreicht ist.

Ausnahmen

array ist null.

offset oder count ist ein negativer Wert.

Lesevorgänge werden vom Stream nicht unterstützt.

E/A-Fehler

offset und count bezeichnen einen ungültigen Bereich in array.

Es wurden Methoden aufgerufen, nachdem der Stream geschlossen wurde.

Beispiele

Im folgenden Beispiel wird der Inhalt aus einem gelesen und in eine FileStream andere FileStreamgeschrieben.

C#
using System;
using System.IO;

class Test
{

public static void Main()
{
    // Specify a file to read from and to create.
    string pathSource = @"c:\tests\source.txt";
    string pathNew = @"c:\tests\newfile.txt";

    try
    {

        using (FileStream fsSource = new FileStream(pathSource,
            FileMode.Open, FileAccess.Read))
        {

            // Read the source file into a byte array.
            byte[] bytes = new byte[fsSource.Length];
            int numBytesToRead = (int)fsSource.Length;
            int numBytesRead = 0;
            while (numBytesToRead > 0)
            {
                // Read may return anything from 0 to numBytesToRead.
                int n = fsSource.Read(bytes, numBytesRead, numBytesToRead);

                // Break when the end of the file is reached.
                if (n == 0)
                    break;

                numBytesRead += n;
                numBytesToRead -= n;
            }
             numBytesToRead = bytes.Length;

            // Write the byte array to the other FileStream.
            using (FileStream fsNew = new FileStream(pathNew,
                FileMode.Create, FileAccess.Write))
            {
                fsNew.Write(bytes, 0, numBytesToRead);
            }
        }
    }
    catch (FileNotFoundException ioEx)
    {
        Console.WriteLine(ioEx.Message);
    }
}
}

Hinweise

Diese Methode überschreibt Read.

Der offset Parameter gibt den Offset des Byte in array (des Pufferindexes) an, an dem mit dem Lesen begonnen werden soll, und der count Parameter gibt die maximale Anzahl von Bytes an, die aus diesem Stream gelesen werden sollen. Der zurückgegebene Wert ist die tatsächliche Anzahl der gelesenen Bytes oder null, wenn das Ende des Datenstroms erreicht ist. Wenn der Lesevorgang erfolgreich ist, wird die aktuelle Position des Datenstroms um die Anzahl der gelesenen Bytes erweitert. Wenn eine Ausnahme auftritt, bleibt die aktuelle Position des Datenstroms unverändert.

Die Read -Methode gibt nur null zurück, nachdem das Ende des Datenstroms erreicht wurde. Read Andernfalls liest vor der Rückgabe immer mindestens ein Byte aus dem Stream. Wenn bei einem Aufruf Readvon keine Daten aus dem Stream verfügbar sind, blockiert die -Methode, bis mindestens ein Byte von Daten zurückgegeben werden kann. Eine Implementierung kann auch dann weniger Bytes als angefordert zurückgeben, wenn das Ende des Datenstroms nicht erreicht wurde.

Verwenden Sie BinaryReader zum Lesen primitiver Datentypen.

Unterbrechen Sie keinen Thread, der einen Lesevorgang ausführt. Obwohl die Anwendung nach dem Aufheben der Blockierung des Threads erfolgreich ausgeführt werden kann, kann die Unterbrechung die Leistung und Zuverlässigkeit Ihrer Anwendung beeinträchtigen.

Eine Liste der allgemeinen Datei- und Verzeichnisvorgänge finden Sie unter Allgemeine E/A-Aufgaben.

Weitere Informationen

Gilt für:

.NET 9 und andere Versionen
Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Read(Span<Byte>)

Quelle:
FileStream.cs
Quelle:
FileStream.cs
Quelle:
FileStream.cs

Liest eine Bytesequenz aus dem aktuellen Dateidatenstrom und setzt die Position in diesem Dateidatenstrom um die Anzahl der gelesenen Bytes nach vorn.

C#
public override int Read (Span<byte> buffer);

Parameter

buffer
Span<Byte>

Ein Bereich im Arbeitsspeicher. Bei der Rückgabe dieser Methode werden die Inhalte dieses Bereichs durch die aus dem aktuellen Dateidatenstrom gelesenen Bytes ersetzt.

Gibt zurück

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

Hinweise

Verwenden Sie die CanRead -Eigenschaft, um zu bestimmen, ob der aktuelle instance Lesevorgänge unterstützt. Verwenden Sie die ReadAsync -Methode, um asynchron aus dem aktuellen Stream zu lesen.

Diese Methode liest maximal buffer.Length Bytes aus dem aktuellen Dateidatenstrom und speichert sie in buffer. Die aktuelle Position innerhalb des Dateidatenstroms wird um die Anzahl der gelesenen Bytes erweitert. Wenn jedoch eine Ausnahme auftritt, bleibt die aktuelle Position im Dateidatenstrom unverändert. Die -Methode wird blockiert, bis mindestens ein Byte von Daten gelesen werden kann, falls keine Daten verfügbar sind. Read gibt nur 0 zurück, wenn im Dateidatenstrom keine Daten mehr vorhanden sind und keine weiteren (z. B. ein geschlossener Socket oder ein Dateiende) erwartet werden. Die -Methode kann auch dann weniger Bytes zurückgeben als angefordert, wenn das Ende des Dateidatenstroms nicht erreicht wurde.

Verwenden Sie BinaryReader zum Lesen primitiver Datentypen.

Gilt für:

.NET 9 und andere Versionen
Produkt Versionen
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1