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

Definición

Sobrecargas

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

Lee un bloque de bytes de la secuencia y escribe los datos en un búfer dado.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>)

Lee una secuencia de bytes de la secuencia de archivo actual y avanza la posición en esta secuencia de archivo según el número de bytes leídos.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)

Lee un bloque de bytes de la secuencia y escribe los datos en un búfer dado.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

Parámetros

array
Byte[]

Cuando este método devuelve un valor, contiene la matriz de bytes especificada con los valores entre offset y (offset + count - 1) reemplazados por los bytes leídos desde el origen actual.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

Desplazamiento de bytes en array donde se colocarán los bytes leídos.The byte offset in array at which the read bytes will be placed.

count
Int32 Int32 Int32 Int32

Número máximo de bytes que se pueden leer.The maximum number of bytes to read.

Devoluciones

Número total de bytes leídos en el búfer.The total number of bytes read into the buffer. Puede ser menor que el número de bytes solicitado si ese número de bytes no está disponible actualmente o cero si se ha alcanzado el final de la secuencia.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.

Excepciones

La secuencia no admite lectura.The stream does not support reading.

Error de E/S.An I/O error occurred.

offset y count describen un intervalo no válido en array.offset and count describe an invalid range in array.

Se efectuó una llamada a los métodos después de cerrar la secuencia.Methods were called after the stream was closed.

Ejemplos

En el ejemplo siguiente se lee el contenido FileStream de un y se escribe FileStreamen otro.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

Comentarios

Este método invalida Read.This method overrides Read.

El offset parámetro proporciona el desplazamiento del byte en array (el índice de búfer) en el que se va a empezar a count leer, y el parámetro proporciona el número máximo de bytes que se van a leer de esta secuencia.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. El valor devuelto es el número real de bytes leídos o cero si se alcanza el final de la secuencia.The returned value is the actual number of bytes read, or zero if the end of the stream is reached. Si la operación de lectura se realiza correctamente, la posición actual de la secuencia se avanza por el número de bytes leídos.If the read operation is successful, the current position of the stream is advanced by the number of bytes read. Si se produce una excepción, la posición actual de la secuencia no cambia.If an exception occurs, the current position of the stream is unchanged.

El Read método devuelve cero solo después de llegar al final de la secuencia.The Read method returns zero only after reaching the end of the stream. De lo Read contrario, siempre lee al menos un byte de la secuencia antes de devolver.Otherwise, Read always reads at least one byte from the stream before returning. Si no hay datos disponibles en la secuencia en una llamada a Read, el método se bloqueará hasta que se pueda devolver al menos un byte de datos.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. Una implementación es gratuita para devolver menos bytes de los solicitados, incluso si no se ha alcanzado el final de la secuencia.An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached.

Se BinaryReader usa para leer los tipos de datos primitivos.Use BinaryReader for reading primitive data types.

No interrumpa un subproceso que está realizando una operación de lectura.Do not interrupt a thread that is performing a read operation. Aunque puede parecer que la aplicación se ejecuta correctamente después de desbloquear el subproceso, la interrupción puede reducir el rendimiento y la confiabilidad de la aplicación.Although the application may appear to run successfully after the thread is unblocked, the interruption can decrease your application's performance and reliability.

Para obtener una lista de operaciones comunes de archivos y directorios, vea tareas de e/s comunes.For a list of common file and directory operations, see Common I/O Tasks.

Consulte también:

Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>)

Lee una secuencia de bytes de la secuencia de archivo actual y avanza la posición en esta secuencia de archivo según el número de bytes leídos.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

Parámetros

buffer
Span<Byte>

Región de memoria.A region of memory. Cuando este método finaliza, el contenido de esta región se reemplaza por los bytes leídos de la secuencia de archivo actual.When this method returns, the contents of this region are replaced by the bytes read from the current file stream.

Devoluciones

Número total de bytes leídos en el búfer.The total number of bytes read into the buffer. Puede ser menor que el número de bytes asignado en el búfer si esos bytes no están disponibles en ese momento o cero (0) si se ha alcanzado el final de la secuencia.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.

Comentarios

Utilice la CanRead propiedad para determinar si la instancia actual admite operaciones de lectura.Use the CanRead property to determine whether the current instance supports reading. Use el ReadAsync método para leer de forma asincrónica desde la secuencia actual.Use the ReadAsync method to read asynchronously from the current stream.

Este método lee un máximo de buffer.Length bytes de la secuencia de archivos actual y los almacena bufferen.This method reads a maximum of buffer.Length bytes from the current file stream and stores them in buffer. La posición actual dentro de la secuencia de archivo se avanza por el número de bytes leídos; sin embargo, si se produce una excepción, la posición actual dentro de la secuencia del archivo permanece sin cambios.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. El método se bloqueará hasta que se pueda leer al menos un byte de datos, en caso de que no haya datos disponibles.The method will block until at least one byte of data can be read, in the event that no data is available. Readdevuelve 0 solo cuando no hay más datos en la secuencia de archivos y no se espera más (por ejemplo, un socket cerrado o el final del archivo).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). El método es libre para devolver menos bytes de los solicitados, incluso si no se ha alcanzado el final de la secuencia de archivos.The method is free to return fewer bytes than requested even if the end of the file stream has not been reached.

Se BinaryReader usa para leer los tipos de datos primitivos.Use BinaryReader for reading primitive data types.

Se aplica a