FileStream.Read Méthode

Définition

Surcharges

Read(Byte[], Int32, Int32)

Lit un bloc d'octets dans le flux et écrit les données dans une mémoire tampon donnée.Reads a block of bytes from the stream and writes the data in a given buffer.

Read(Span<Byte>)

Lit une séquence d’octets dans le flux de fichier actuel et avance la position dans le flux de fichier du nombre d’octets lus.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)

Lit un bloc d'octets dans le flux et écrit les données dans une mémoire tampon donnée.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

Paramètres

array
Byte[]

Quand cette méthode est retournée, contient le tableau d’octets spécifié dont les valeurs comprises entre offset et (offset + count - 1) sont remplacées par les octets lus dans la source actuelle.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

Dans array, décalage d'octet auquel les octets lus seront placés.The byte offset in array at which the read bytes will be placed.

count
Int32

Nombre maximal d'octets à lire.The maximum number of bytes to read.

Retours

Nombre total d'octets lus dans la mémoire tampon.The total number of bytes read into the buffer. Le total peut être inférieur au nombre d'octets demandé si ce nombre d'octets n'est pas disponible actuellement, ou il peut être égal à zéro si la fin du flux est atteinte.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.

Exceptions

array a la valeur null.array is null.

offset ou count est un nombre négatif.offset or count is negative.

Le flux ne prend pas en charge la lecture.The stream does not support reading.

Une erreur d'E/S s'est produite.An I/O error occurred.

offset et count décrivent une plage non valide dans array.offset and count describe an invalid range in array.

Des méthodes ont été appelées après la fermeture du flux.Methods were called after the stream was closed.

Exemples

L’exemple suivant lit le contenu d’un FileStream et l’écrit dans un autre FileStream.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

Remarques

Cette méthode se substitue à Read.This method overrides Read.

Le paramètre offset indique le décalage de l’octet dans array (l’index de mémoire tampon) à partir duquel commencer la lecture, et le paramètre count donne le nombre maximal d’octets à lire à partir de ce flux.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. La valeur retournée est le nombre réel d’octets lus, ou zéro si la fin du flux est atteinte.The returned value is the actual number of bytes read, or zero if the end of the stream is reached. Si l’opération de lecture réussit, la position actuelle du flux est avancée du nombre d’octets lus.If the read operation is successful, the current position of the stream is advanced by the number of bytes read. Si une exception se produit, la position actuelle du flux est inchangée.If an exception occurs, the current position of the stream is unchanged.

La méthode Read retourne zéro uniquement après avoir atteint la fin du flux.The Read method returns zero only after reaching the end of the stream. Dans le cas contraire, Read lit toujours au moins un octet à partir du flux avant de retourner.Otherwise, Read always reads at least one byte from the stream before returning. Si aucune donnée n’est disponible à partir du flux lors d’un appel à Read, la méthode se bloque jusqu’à ce qu’au moins un octet de données puisse être retourné.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. Une implémentation est libre de retourner moins d’octets que la demande, même si la fin du flux n’a pas été atteinte.An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached.

Utilisez BinaryReader pour lire les types de données primitifs.Use BinaryReader for reading primitive data types.

N’interrompez pas un thread effectuant une opération de lecture.Do not interrupt a thread that is performing a read operation. Bien que l’application puisse sembler s’exécuter correctement après le déblocage du thread, l’interruption peut réduire les performances et la fiabilité de votre application.Although the application may appear to run successfully after the thread is unblocked, the interruption can decrease your application's performance and reliability.

Pour obtenir la liste des opérations courantes relatives aux fichiers et aux répertoires, consultez tâches d’e/s courantes.For a list of common file and directory operations, see Common I/O Tasks.

Voir aussi

Read(Span<Byte>)

Lit une séquence d’octets dans le flux de fichier actuel et avance la position dans le flux de fichier du nombre d’octets lus.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

Paramètres

buffer
Span<Byte>

Région de la mémoire.A region of memory. Quand cette méthode retourne, le contenu de cette zone est remplacé par les octets lus dans le flux de fichier actuel.When this method returns, the contents of this region are replaced by the bytes read from the current file stream.

Retours

Nombre total d'octets lus dans la mémoire tampon.The total number of bytes read into the buffer. Le nombre d’octets peut être inférieur au nombre d’octets alloués dans la mémoire tampon si ce nombre d’octets n’est pas actuellement disponible, ou égal à zéro (0) si la fin du flux a été atteinte.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.

Remarques

Utilisez la propriété CanRead pour déterminer si l’instance actuelle prend en charge la lecture.Use the CanRead property to determine whether the current instance supports reading. Utilisez la méthode ReadAsync pour lire de façon asynchrone à partir du flux actuel.Use the ReadAsync method to read asynchronously from the current stream.

Cette méthode lit un maximum de buffer.Length octets dans le flux de fichier actuel et les stocke dans buffer.This method reads a maximum of buffer.Length bytes from the current file stream and stores them in buffer. La position actuelle dans le flux de fichier est avancée du nombre d’octets lus ; Toutefois, si une exception se produit, la position actuelle dans le flux de fichier reste inchangée.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. La méthode se bloque jusqu’à ce qu’au moins un octet de données puisse être lu, dans le cas où aucune donnée n’est disponible.The method will block until at least one byte of data can be read, in the event that no data is available. Read retourne 0 uniquement lorsqu’il n’y a plus de données dans le flux de fichier et qu’il n’y a plus de données attendues (par exemple, un socket fermé ou une fin de fichier).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). La méthode est libre de retourner moins d’octets que la demande, même si la fin du flux de fichier n’a pas été atteinte.The method is free to return fewer bytes than requested even if the end of the file stream has not been reached.

Utilisez BinaryReader pour lire les types de données primitifs.Use BinaryReader for reading primitive data types.

S’applique à