FileStream.Read FileStream.Read FileStream.Read FileStream.Read Method

Definition

Überlädt

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

Liest einen Byteblock aus dem Stream und schreibt die Daten in einen angegebenen Puffer.Reads a block of bytes from the stream and writes the data in a given buffer.

Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>) 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.Reads a sequence of bytes from the current file stream and advances the position within the file stream by the number of bytes read.

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

Liest einen Byteblock aus dem Stream und schreibt die Daten in einen angegebenen Puffer.Reads a block of bytes from the stream and writes the data in a given buffer.

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

Parameter

array
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.When this method returns, 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

Das Byteoffset in array, an dem die gelesenen Bytes platziert werden.The byte offset in array at which the read bytes will be placed.

count
Int32 Int32 Int32 Int32

Die maximale Anzahl der zu lesenden Bytes.The maximum number of bytes to read.

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 Streamende erreicht ist.This might be less than the number of bytes requested if that number of bytes are not currently available, or zero if the end of the stream is reached.

Ausnahmen

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

Lesevorgänge werden vom Stream nicht unterstützt.The stream does not support reading.

E/A-FehlerAn I/O error occurred.

offset und count bezeichnen einen ungültigen Bereich in array.offset and count describe an invalid range in array.

Es wurden Methoden aufgerufen, nachdem der Stream geschlossen wurde.Methods were called after the stream was closed.

Beispiele

Im folgenden Beispiel wird der Inhalt aus einem FileStream gelesen und in einen anderen FileStreamgeschrieben.The following example reads the contents from a FileStream and writes it into another 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);
    }
}
}
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.This method overrides Read.

Der offset -Parameter gibt den Offset des Bytes in array (den Puffer Index) an, an dem mit dem Lesen begonnen count wird, und der-Parameter gibt die maximale Anzahl von Bytes an, die aus diesem Stream gelesen werden sollen.The offset parameter gives the offset of the byte in array (the buffer index) at which to begin reading, and the count parameter gives the maximum number of bytes to be read from this stream. Der zurückgegebene Wert ist die tatsächliche Anzahl von gelesenen Bytes, oder 0 (null), wenn das Ende des Streams erreicht ist.The returned value is the actual number of bytes read, or zero if the end of the stream is reached. Wenn der Lesevorgang erfolgreich ist, wird die aktuelle Position des Streams um die Anzahl der gelesenen Bytes erweitert.If the read operation is successful, the current position of the stream is advanced by the number of bytes read. Wenn eine Ausnahme auftritt, wird die aktuelle Position des Streams unverändert.If an exception occurs, the current position of the stream is unchanged.

Die Read Methode gibt 0 (null) nur zurück, nachdem das Ende des Streams erreicht wurde.The Read method returns zero only after reaching the end of the stream. Andernfalls liest vor der Rückgabe immermindestenseinByteausdemDatenstrom.ReadOtherwise, Read always reads at least one byte from the stream before returning. Wenn beim Abrufen Readvon keine Daten aus dem Stream verfügbar sind, wird die-Methode blockiert, bis mindestens ein Byte mit Daten zurückgegeben werden kann.If no data is available from the stream upon a call to Read, the method will block until at least one byte of data can be returned. Eine-Implementierung kann weniger Bytes zurückgeben als angefordert werden, auch wenn das Ende des Streams nicht erreicht wurde.An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached.

Verwenden BinaryReader Sie zum Lesen primitiver Datentypen.Use BinaryReader for reading primitive data types.

Unterbrechen Sie keinen Thread, der einen Lesevorgang ausführt.Do not interrupt a thread that is performing a read operation. Obwohl die Anwendung nach der Blockierung des Threads möglicherweise erfolgreich ausgeführt wird, kann die Unterbrechung die Leistung und Zuverlässigkeit Ihrer Anwendung verringern.Although the application may appear to run successfully after the thread is unblocked, the interruption can decrease your application's performance and reliability.

Eine Liste der allgemeinen Datei-und Verzeichnis Vorgänge finden Sie unter Allgemeine e/a-Aufgaben.For a list of common file and directory operations, see Common I/O Tasks.

Siehe auch

Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>) 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.Reads a sequence of bytes from the current file stream and advances the position within the file stream by the number of bytes read.

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 Bereich im Arbeitsspeicher.A region of memory. Bei der Rückgabe dieser Methode werden die Inhalte dieses Bereichs durch die aus dem aktuellen Dateidatenstrom gelesenen Bytes ersetzt.When this method returns, the contents of this region are replaced by the bytes read from the current file 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 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 Sie CanRead die-Eigenschaft, um zu bestimmen, ob die aktuelle Instanz Lesevorgänge unterstütztUse the CanRead property to determine whether the current instance supports reading. Verwenden Sie ReadAsync die-Methode, um asynchron aus dem aktuellen Stream zu lesen.Use the ReadAsync method to read asynchronously from the current stream.

Diese Methode liest maximal buffer.Length Bytes aus dem aktuellen Dateistream und speichert Sie in. bufferThis method reads a maximum of buffer.Length bytes from the current file stream and stores them in buffer. Die aktuelle Position im Dateistream wird um die Anzahl der gelesenen Bytes erweitert. Wenn jedoch eine Ausnahme auftritt, bleibt die aktuelle Position im Dateistream unverändert.The current position within the file stream is advanced by the number of bytes read; however, if an exception occurs, the current position within the file stream remains unchanged. Die-Methode wird blockiert, bis mindestens ein Byte der Daten gelesen werden kann, wenn keine Daten verfügbar sind.The method will block until at least one byte of data can be read, in the event that no data is available. Readgibt 0 (null) nur dann zurück, wenn keine weiteren Daten im Dateistream vorhanden sind und nicht mehr erwartet wird (z. b. ein geschlossener Socket oder ein Dateiende).Read returns 0 only when there is no more data in the file stream and no more is expected (such as a closed socket or end of file). Die-Methode kann weniger Bytes zurückgeben als angefordert werden, auch wenn das Ende des Datei Datenstroms nicht erreicht wurde.The method is free to return fewer bytes than requested even if the end of the file stream has not been reached.

Verwenden BinaryReader Sie zum Lesen primitiver Datentypen.Use BinaryReader for reading primitive data types.

Gilt für: