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

Clase Stream

 

Publicado: noviembre de 2016

Proporciona una vista genérica de una secuencia de bytes. Esta es una clase abstracta.

Para examinar el código fuente de .NET Framework para este tipo, consulte el Reference Source.

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


<SerializableAttribute>
<ComVisibleAttribute(True)>
Public MustInherit Class Stream
	Inherits MarshalByRefObject
	Implements IDisposable

NombreDescripción
System_CAPS_protmethodStream()

Inicializa una nueva instancia de la clase Stream.

NombreDescripción
System_CAPS_pubpropertyCanRead

Cuando se reemplaza en una clase derivada, obtiene un valor que indica si la secuencia actual admite lectura.

System_CAPS_pubpropertyCanSeek

Cuando se reemplaza en una clase derivada, obtiene un valor que indica si la secuencia actual admite búsquedas.

System_CAPS_pubpropertyCanTimeout

Obtiene un valor que determina si se puede agotar el tiempo de espera de la secuencia actual.

System_CAPS_pubpropertyCanWrite

Cuando se reemplaza en una clase derivada, obtiene un valor que indica si la secuencia actual admite escritura.

System_CAPS_pubpropertyLength

Cuando se reemplaza en una clase derivada, obtiene la longitud en bytes de la secuencia.

System_CAPS_pubpropertyPosition

Cuando se reemplaza en una clase derivada, se obtiene o se establece la posición dentro de la secuencia actual.

System_CAPS_pubpropertyReadTimeout

Obtiene o establece un valor, en milisegundos, que determina durante cuánto tiempo la secuencia intentará realizar operaciones de lectura antes de que se agote el tiempo de espera.

System_CAPS_pubpropertyWriteTimeout

Obtiene o establece un valor, en milisegundos, que determina durante cuánto tiempo la secuencia intentará realizar operaciones de escritura antes de que se agote el tiempo de espera.

NombreDescripción
System_CAPS_pubmethodBeginRead(Byte(), Int32, Int32, AsyncCallback, Object)

Comienza una operación de lectura asincrónica. (Utilice ReadAsync en su lugar; vea la sección Comentarios).

System_CAPS_pubmethodBeginWrite(Byte(), Int32, Int32, AsyncCallback, Object)

Comienza una operación de escritura asincrónica. (Utilice WriteAsync en su lugar; vea la sección Comentarios).

System_CAPS_pubmethodClose()

Cierra la secuencia actual y libera todos los recursos (como sockets e identificadores de archivo) asociados a esta. En lugar de llamar a este método, asegúrese de que la secuencia se desecha correctamente.

System_CAPS_pubmethodCopyTo(Stream)

Cierra la secuencia actual y libera todos los recursos (tales como sockets y manejadores de archivo)asociados a la secuencia actual.

System_CAPS_pubmethodCopyTo(Stream, Int32)

En vez de llamar a este método, asegúrese de que la secuencia actual ha sido correctamente liberada.

System_CAPS_pubmethodCopyToAsync(Stream)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia.

System_CAPS_pubmethodCopyToAsync(Stream, Int32)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia, usando el tamaño de búfer especificado.

System_CAPS_pubmethodCopyToAsync(Stream, Int32, CancellationToken)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia, utilizando el tamaño de búfer y el token de cancelación especificados.

System_CAPS_pubmethodCreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar a un proxy que se utiliza para comunicarse con un objeto remoto.(Heredado de MarshalByRefObject).

System_CAPS_protmethodCreateWaitHandle()

Obsoleto. Asigna un objeto WaitHandle.

System_CAPS_pubmethodDispose()

Libera todos los recursos que usa Stream.

System_CAPS_protmethodDispose(Boolean)

Libera los recursos no administrados que usa Stream y libera los recursos administrados de forma opcional.

System_CAPS_pubmethodEndRead(IAsyncResult)

Espera a que se complete la lectura asincrónica que se encuentra pendiente. (Utilice ReadAsync en su lugar; vea la sección Comentarios).

System_CAPS_pubmethodEndWrite(IAsyncResult)

Finaliza una operación de escritura asincrónica. (Utilice WriteAsync en su lugar; vea la sección Comentarios).

System_CAPS_pubmethodEquals(Object)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object).

System_CAPS_protmethodFinalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por el recolector de basura. (Heredado de Object).

System_CAPS_pubmethodFlush()

Cuando se reemplaza en una clase derivada, borra todos los búferes de esta secuencia y hace que todos los datos almacenados en el búfer se escriban en el dispositivo subyacente.

System_CAPS_pubmethodFlushAsync()

Borra asincrónicamente todos los búferes de esta secuencia y hace que los datos almacenados en búfer se escriban en el dispositivo subyacente.

System_CAPS_pubmethodFlushAsync(CancellationToken)

Borra asincrónicamente todos los búferes del flujo actual, hace que todos los datos almacenados en el búfer se escriban en el dispositivo subyacente y supervisa las solicitudes de cancelación.

System_CAPS_pubmethodGetHashCode()

Sirve como la función hash predeterminada.(Heredado de Object).

System_CAPS_pubmethodGetLifetimeService()

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.(Heredado de MarshalByRefObject).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_pubmethodInitializeLifetimeService()

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.(Heredado de MarshalByRefObject).

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_protmethodMemberwiseClone(Boolean)

Crea una copia superficial del elemento actual MarshalByRefObject objeto.(Heredado de MarshalByRefObject).

System_CAPS_protmethodObjectInvariant()

Obsoleto. Esta API admite la infraestructura producto y no está diseñada para usarse directamente desde el código. Proporciona compatibilidad con una clase Contract.

System_CAPS_pubmethodRead(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.

System_CAPS_pubmethodReadAsync(Byte(), Int32, Int32)

Lee asincrónicamente una secuencia de bytes de la secuencia actual y avanza la posición en esta secuencia según el número de bytes leídos.

System_CAPS_pubmethodReadAsync(Byte(), Int32, Int32, CancellationToken)

Lee de forma asincrónica una secuencia de bytes en la secuencia actual, se hace avanzar la posición dentro de la secuencia el número de bytes leídos y controla las solicitudes de cancelación.

System_CAPS_pubmethodReadByte()

Lee un byte de la secuencia y hace avanzar la posición de la secuencia en un byte, o devuelve -1 si está al final de la secuencia.

System_CAPS_pubmethodSeek(Int64, SeekOrigin)

Cuando se reemplaza en una clase derivada, se establece la posición dentro de la secuencia actual.

System_CAPS_pubmethodSetLength(Int64)

Cuando se reemplaza en una clase derivada, se establece la longitud de la secuencia actual.

System_CAPS_pubmethodSystem_CAPS_staticSynchronized(Stream)

Crea un contenedor seguro para subprocesos (sincronizado) alrededor del objeto Stream especificado.

System_CAPS_pubmethodToString()

Devuelve una cadena que representa al objeto actual. (Heredado de Object).

System_CAPS_pubmethodWrite(Byte(), Int32, Int32)

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

System_CAPS_pubmethodWriteAsync(Byte(), Int32, Int32)

Escribe asincrónicamente una secuencia de bytes en la secuencia actual y avanza la posición actual en esta secuencia según el número de bytes escritos.

System_CAPS_pubmethodWriteAsync(Byte(), Int32, Int32, CancellationToken)

Escribe de forma asincrónica una secuencia de bytes en la secuencia actual, se hace avanzar la posición actual dentro de la secuencia el número de bytes escritos y controla las solicitudes de cancelación.

System_CAPS_pubmethodWriteByte(Byte)

Escribe un byte a la posición actual en la secuencia y avanza la posición de la secuencia en un byte.

NombreDescripción
System_CAPS_pubfieldSystem_CAPS_staticNull

Stream sin memoria auxiliar.

System_CAPS_noteNota

Para ver el código fuente de .NET Framework para este tipo, consulte el Reference Source. Puede examinar el código fuente en línea, descargar la referencia para visualizarlo sin conexión y paso a paso el código fuente (incluidas revisiones y actualizaciones) durante la depuración; see instructions.

Streames la clase base abstracta de todas las secuencias. Una secuencia es una abstracción de una secuencia de bytes como, por ejemplo, un archivo, un dispositivo de entrada/salida, una canalización de comunicación entre procesos o un socket TCP/IP. La Stream clase y sus clases derivadas proporcionan una vista genérica de estos diferentes tipos de entrada y salida y aislar el programador de los detalles específicos del sistema operativo y los dispositivos subyacentes.

Las secuencias comprenden tres operaciones fundamentales:

  • Puede leer en secuencias. Lectura es la transferencia de datos desde una secuencia a una estructura de datos, como una matriz de bytes.

  • Puede escribir en secuencias. Escritura es la transferencia de datos de una estructura de datos en una secuencia.

  • Las secuencias pueden admitir operaciones de búsqueda. Operaciones de búsqueda hace referencia a consultar y modificar la posición actual dentro de un flujo. Buscar capacidad depende del tipo de almacén de copia de seguridad tiene una secuencia. Por ejemplo, secuencias de red no tienen ningún concepto unificado de la posición actual y, por tanto, normalmente no admite operaciones de búsqueda.

Algunas de las más usan de secuencias que heredan de Stream son FileStream, y MemoryStream.

Dependiendo del origen de datos subyacente o un repositorio, secuencias podrían admitir solo algunas de estas características. También puede consultar un flujo para sus capacidades mediante la CanRead, CanWrite, y CanSeek propiedades de la Stream clase.

El Read y Write métodos leer y escribir datos en una variedad de formatos. Para las secuencias que admiten operaciones de búsqueda, use la Seek y SetLength métodos y la Position y Length propiedades para consultar y modificar la posición actual y la longitud de una secuencia.

Este tipo implementa la IDisposable interfaz. Cuando haya terminado de utilizar el tipo, debe eliminar del mismo directa o indirectamente. Para deshacerse del tipo directamente, llame a su Dispose método en un try/catch bloque. Para deshacerse de él indirectamente, use una construcción de lenguaje como using (en C#) o Using (en Visual Basic). Para obtener más información, vea la sección "Uso de un objeto que implementa IDisposable" en el IDisposable tema de la interfaz.

Desechar un Stream objeto vacía los datos almacenados en búfer y llama a básicamente el Flush método automáticamente. DisposeTambién libera los recursos del sistema operativo como identificadores de archivos, las conexiones de red o la memoria usada para cualquier búfer interno. La BufferedStream clase proporciona la capacidad de ajuste de una secuencia almacenada en búfer en otra secuencia con el fin de mejorar la lectura y escritura de rendimiento.

A partir de la .NET Framework 4.5, la Stream clase incluye métodos asincrónicos para simplificar las operaciones asincrónicas. Contiene un método asincrónico Async en su nombre, como ReadAsync, WriteAsync, CopyToAsync, y FlushAsync. Estos métodos permiten realizar operaciones de E/S de gran cantidad de recursos sin bloquear el subproceso principal. Esta consideración de rendimiento es especialmente importante en una aplicación de la Tienda Windows 8.x o una aplicación de escritorio en que una operación de streaming prolongada puede bloquear el subproceso de interfaz de usuario y hacer que parezca que una aplicación ha dejado de responder. Los métodos asincrónicos se usan junto con la async y await palabras clave en Visual Basic y C#.

Cuando se utiliza en una Tienda Windows 8.x aplicación, Stream incluye dos métodos de extensión: AsInputStream y AsOutputStream. Estos métodos convierten un Stream objeto en una secuencia de la Windows en tiempo de ejecución. También puede convertir una secuencia en la Windows en tiempo de ejecución a una Stream objeto mediante el uso de la AsStreamForRead y AsStreamForWrite métodos. Para obtener más información, vea Cómo: Convertir flujos de .NET Framework en flujos de Windows en tiempo de ejecución, y viceversa

Algunas implementaciones de secuencia realizan en un búfer local de los datos subyacentes para mejorar el rendimiento. Para estas secuencias, puede usar el Flush o FlushAsync método para borrar los búferes internos y asegurarse de que todos los datos se ha escrito en el origen de datos o repositorio subyacente.

Si necesita un flujo sin memoria auxiliar (también conocido como un depósito de bits), use el Null campo que desea recuperar una instancia de una secuencia que está diseñada para este propósito.

Notas para implementadores:

Cuando se implementa una clase derivada de Stream, se deben proporcionar implementaciones para la Read y Write métodos. Los métodos asincrónicos ReadAsync, WriteAsync, y CopyToAsync utilizan los métodos sincrónicos Read y Write en sus implementaciones. Por lo tanto, las implementaciones de Read y Write funcionarán correctamente con los métodos asincrónicos. Las implementaciones predeterminadas de ReadByte y WriteByte crear una nueva matriz de byte único elemento y, a continuación, llamar a sus implementaciones del Read y Write. Al derivar de Stream, se recomienda reemplazar estos métodos para tener acceso al búfer interno y, si tiene una, para mejorar considerablemente el rendimiento. También debe proporcionar implementaciones de CanRead, CanSeek, CanWrite, Flush, Length, Position, Seek, y SetLength.

No invalide el Close método, en su lugar, coloca todo el Stream lógica de limpieza en el Dispose (método). Para obtener más información, consulta Implementar un método Dispose.

En el ejemplo siguiente se muestra cómo utilizar dos FileStream objetos que se va a copiar los archivos de forma asincrónica desde un directorio a otro directorio. La clase FileStream se deriva de la clase Stream. Observe que el controlador de eventos Click para el control Button está marcado con el modificador async porque llama a un método asincrónico.

Imports System.IO

Class MainWindow

    Private Async Sub Button_Click(sender As Object, e As RoutedEventArgs)
        Dim StartDirectory As String = "c:\Users\exampleuser\start"
        Dim EndDirectory As String = "c:\Users\exampleuser\end"

        For Each filename As String In Directory.EnumerateFiles(StartDirectory)
            Using SourceStream As FileStream = File.Open(filename, FileMode.Open)
                Using DestinationStream As FileStream = File.Create(EndDirectory + filename.Substring(filename.LastIndexOf("\"c)))
                    Await SourceStream.CopyToAsync(DestinationStream)
                End Using

            End Using
        Next
    End Sub

End Class

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: