Freigeben über


FileStream.Read Methode

Definition

Überlädt

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

Liest einen Byteblock aus dem Datenstrom und schreibt die Daten in einen bestimmten Puffer.

Read(Span<Byte>)

Liest eine Bytesequenz aus dem aktuellen Dateidatenstrom und wechselt die Position innerhalb des Dateidatenstroms um die Anzahl der gelesenen Bytes.

Read(Byte[], Int32, Int32)

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

Liest einen Byteblock aus dem Datenstrom und schreibt die Daten in einen bestimmten Puffer.

public:
 override int Read(cli::array <System::Byte> ^ array, int offset, int count);
public:
 override int Read(cli::array <System::Byte> ^ buffer, int offset, int count);
public override int Read(byte[] array, int offset, int count);
public override int Read(byte[] buffer, int offset, int count);
override this.Read : byte[] * int * int -> int
override this.Read : byte[] * int * int -> int
Public Overrides Function Read (array As Byte(), offset As Integer, count As Integer) As Integer
Public Overrides Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer

Parameter

arraybuffer
Byte[]

Wenn diese Methode zurückgegeben wird, enthält das angegebene Bytearray mit den Werten zwischen offset und (countoffset + - 1) ersetzt durch die Bytes, die aus der aktuellen Quelle gelesen werden).

offset
Int32

Der Byte-Offset, in array dem die Lesebytes platziert werden.

count
Int32

Die maximale Anzahl der zu lesenden Bytes.

Gibt zurück

Die Gesamtanzahl der in den Puffer gelesenen Bytes. Dies kann kleiner als die Anzahl der angeforderten Bytes sein, wenn diese Anzahl von Bytes derzeit nicht verfügbar ist, oder null, wenn das Ende des Datenstroms erreicht ist.

Ausnahmen

array ist null.

offset oder count ist negativ.

Der Datenstrom unterstützt das Lesen nicht.

Ein E/A-Fehler ist aufgetreten.

offset und count einen ungültigen Bereich in array.

Methoden wurden aufgerufen, nachdem der Datenstrom geschlossen wurde.

Beispiele

Das folgende Beispiel liest den Inhalt aus einem FileStream und schreibt ihn in eine andere FileStream.

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);
    }
}
}
open System.IO

// Specify a file to read from and to create.
let pathSource = @"c:\tests\source.txt"
let pathNew = @"c:\tests\newfile.txt"

try
    use fsSource = new FileStream(pathSource, FileMode.Open, FileAccess.Read)

    // Read the source file into a byte array.
    let mutable numBytesToRead = int fsSource.Length
    let bytes = numBytesToRead |> Array.zeroCreate
    let mutable numBytesRead = 0

    while numBytesToRead > 0 do
        // Read may return anything from 0 to numBytesToRead.
        let n = fsSource.Read(bytes, numBytesRead, numBytesToRead)

        // Break when the end of the file is reached.
        if n <> 0 then
            numBytesRead <- numBytesRead + n
            numBytesToRead <- numBytesToRead - n

    let numBytesToRead = bytes.Length

    // Write the byte array to the other FileStream.
    use fsNew = new FileStream(pathNew, FileMode.Create, FileAccess.Write)
    fsNew.Write(bytes, 0, numBytesToRead)
with :? FileNotFoundException as ioEx ->
    printfn $"{ioEx.Message}"
Imports System.IO
Class Test
    
Public Shared Sub Main()
    ' Specify a file to read from and to create.
    Dim pathSource As String = "c:\tests\source.txt"
    Dim pathNew As String = "c:\tests\newfile.txt"
    Try 
        Using fsSource As FileStream = New FileStream(pathSource, _
            FileMode.Open, FileAccess.Read)
            ' Read the source file into a byte array.
                Dim bytes() As Byte = New Byte((fsSource.Length) - 1) {}
                Dim numBytesToRead As Integer = CType(fsSource.Length,Integer)
                Dim numBytesRead As Integer = 0

                While (numBytesToRead > 0)
                    ' Read may return anything from 0 to numBytesToRead.
                    Dim n As Integer = fsSource.Read(bytes, numBytesRead, _
                        numBytesToRead)
                    ' Break when the end of the file is reached.
                    If (n = 0) Then
                        Exit While
                    End If
                    numBytesRead = (numBytesRead + n)
                    numBytesToRead = (numBytesToRead - n)

                End While
            numBytesToRead = bytes.Length

            ' Write the byte array to the other FileStream.
            Using fsNew As FileStream = New FileStream(pathNew, _
                FileMode.Create, FileAccess.Write)
                fsNew.Write(bytes, 0, numBytesToRead)
            End Using
        End Using
    Catch ioEx As FileNotFoundException
        Console.WriteLine(ioEx.Message)
    End Try
End Sub
End Class

Hinweise

Diese Methode überschreibt Read.

Der offset Parameter gibt den Offset des Byte in array (der Pufferindex) an, an dem mit dem Lesen begonnen werden soll, und der count Parameter gibt die maximale Anzahl von Bytes an, die aus diesem Datenstrom 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, ist die aktuelle Position des Datenstroms unverändert.

Die Read Methode gibt null erst nach Erreichen des Endes des Datenstroms zurück. Read Andernfalls liest vor der Rückgabe immer mindestens ein Byte aus dem Datenstrom vor. Wenn beim Aufruf Readdes Datenstroms keine Daten verfügbar sind, wird die Methode blockiert, bis mindestens ein Byte von Daten zurückgegeben werden kann. 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 .

Unterbrechen Sie keinen Thread, der einen Lesevorgang ausführt. Obwohl die Anwendung nach dem Entsperren des Threads möglicherweise erfolgreich ausgeführt wird, kann die Unterbrechung die Leistung und Zuverlässigkeit Ihrer Anwendung verringern.

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

Weitere Informationen

Gilt für:

Read(Span<Byte>)

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

Liest eine Bytesequenz aus dem aktuellen Dateidatenstrom und wechselt die Position innerhalb des Dateidatenstroms um die Anzahl der gelesenen Bytes.

public:
 override int Read(Span<System::Byte> buffer);
public override int Read(Span<byte> buffer);
override this.Read : Span<byte> -> int
Public Overrides 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 Bytes ersetzt, die aus dem aktuellen Dateidatenstrom gelesen werden.

Gibt zurück

Die Gesamtanzahl der in den Puffer gelesenen Bytes. Dies kann kleiner als die Anzahl der im Puffer zugewiesenen Bytes sein, wenn viele Bytes derzeit nicht verfügbar sind, oder Null (0), wenn 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.

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 innerhalb des Dateidatenstroms unverändert. Die Methode wird blockiert, bis mindestens ein Byte von Daten gelesen werden kann, falls keine Daten verfügbar sind. Read gibt 0 nur zurück, wenn im Dateidatenstrom keine weiteren Daten vorhanden sind und keine weiteren Daten erwartet werden (z. B. ein geschlossener Socket oder ein Ende der Datei). Die Methode kann weniger Bytes zurückgeben als angefordert, auch wenn das Ende des Dateidatenstroms nicht erreicht wurde.

Wird zum Lesen primitiver Datentypen verwendet BinaryReader .

Gilt für: