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

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

 

Cuando se reemplaza en una clase derivada, se lee una secuencia de bytes en la secuencia actual y se hace avanzar la posición dentro de la secuencia el número de bytes leídos.

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

public abstract int Read(
	byte[] buffer,
	int offset,
	int count
)

Parámetros

buffer
Type: System.Byte[]

Matriz de bytes. Cuando este método devuelve un valor, el búfer contiene la matriz de bytes especificada con valores entre offset y (offset + count - 1) reemplazada con los bytes leídos del origen actual.

offset
Type: System.Int32

Desplazamiento en bytes de base cero de buffer donde se comienza a almacenar los datos leídos de la secuencia actual.

count
Type: System.Int32

Número máximo de bytes que se deben leer de la secuencia actual.

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 dicho número no está disponible, o puede ser cero (0) si se alcanza el final de la secuencia.

Exception Condition
ArgumentException

La suma de offset y count es mayor que la longitud del búfer.

ArgumentNullException

El valor de buffer es null.

ArgumentOutOfRangeException

offset o count es negativo.

IOException

Error de E/S.

NotSupportedException

La secuencia no admite lectura.

ObjectDisposedException

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

Utilice la CanRead propiedad para determinar si la instancia actual admite lectura. Utilice la ReadAsync método para leer de forma asincrónica de la secuencia actual.

Las implementaciones de este método leen un máximo de count secuencia de bytes del actual y almacenarlos en buffer comenzando en offset. Avanza la posición actual dentro de la secuencia por el número de bytes leídos; Sin embargo, si se produce una excepción, la posición actual dentro de la secuencia no cambia. Las implementaciones devuelven el número de bytes leídos. La implementación se bloqueará hasta que pueda leerse al menos un byte de datos, en caso de que no hay datos disponibles. ReadDevuelve 0 sólo cuando no hay ningún dato más en la secuencia y no se espera (por ejemplo, un socket cerrado o el final del archivo). 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.

En el ejemplo siguiente se muestra cómo utilizar Read para leer un bloque de datos.

using System;
using System.IO;

public class Block
{
    public static void Main()
    {
        Stream s = new MemoryStream();
        for (int i = 0; i < 122; i++)
        {
            s.WriteByte((byte)i);
        }
        s.Position = 0;

        // Now read s into a byte buffer with a little padding.
        byte[] bytes = new byte[s.Length + 10];
        int numBytesToRead = (int)s.Length;
        int numBytesRead = 0;
        do
        {
            // Read may return anything from 0 to 10.
            int n = s.Read(bytes, numBytesRead, 10);
            numBytesRead += n;
            numBytesToRead -= n;
        } while (numBytesToRead > 0);
        s.Close();

        Console.WriteLine("number of bytes read: {0:d}", numBytesRead);
    }
}

Universal Windows Platform
Disponible desde 4.5
.NET Framework
Disponible desde 1.1
Portable Class Library
Compatible con: portable .NET platforms
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: