Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método FileStream.Read (Byte[], Int32, Int32)

 

Publicado: octubre de 2016

Lee un bloque de bytes de la secuencia y escribe los datos en un búfer dado.

Espacio de nombres:   System.IO
Ensamblado:  mscorlib (en mscorlib.dll)

public override int Read(
	byte[] array,
	int offset,
	int count
)

Parámetros

array
Type: System.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.

offset
Type: System.Int32

Desplazamiento de bytes en array donde se colocarán los bytes leídos.

count
Type: System.Int32

Número máximo de bytes que se pueden leer.

Valor devuelto

Type: System.Int32

Número total de bytes leídos en el búfer. 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.

Exception Condition
ArgumentNullException

El valor de array es null.

ArgumentOutOfRangeException

offset o count es negativo.

NotSupportedException

La secuencia no admite lectura.

IOException

Error de E/S.

ArgumentException

offset y count describen un intervalo no válido en array.

ObjectDisposedException

Se efectuó una llamada a los métodos después de cerrar la secuencia.

Este método reemplaza Read.

El offset parámetro indica el desplazamiento del byte en array (índice de búfer) en que se va a comenzar la lectura y el count parámetro proporciona el número máximo de bytes que se lee en esta secuencia. El valor devuelto es el número real de bytes leídos, o cero si se alcanza el final de la secuencia. Si la operación de lectura se realiza correctamente, la posición actual de la secuencia avanza el número de bytes leídos. Si se produce una excepción, la posición actual de la secuencia no cambia.

El Read método devuelve cero únicamente después de alcanzar el final de la secuencia. De lo contrario, Read siempre lee al menos un byte de la secuencia antes de devolver. Si no hay datos disponibles en la secuencia tras una llamada a Read, el método se bloqueará hasta que pueda devolverse por lo menos un byte de datos. Una implementación es la libertad de devolver menos bytes que los solicitados incluso si no se ha alcanzado el final de la secuencia.

Utilice BinaryReader para leer los tipos de datos primitivos.

Interrumpe un subproceso que está realizando una operación de lectura. Aunque puede parecer que la aplicación ejecutarse correctamente una vez que el subproceso está desbloqueado, la interrupción puede disminuir el rendimiento y la confiabilidad de la aplicación.

Para obtener una lista de operaciones de directorio y de archivo común, consulte Tareas de E/S comunes.

En el ejemplo siguiente se lee el contenido de un FileStream y lo escribe en otra 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);
    }
}
}

Plataforma universal de Windows
Disponible desde 10
.NET Framework
Disponible desde 1.1
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Volver al principio
Mostrar: