Stream Clase
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 (Clase)

 

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, vea la Reference Source.

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


[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class Stream : MarshalByRefObject, 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 pertinente necesaria para generar a un proxy utilizado para comunicarse con un objeto remoto.(Heredado de MarshalByRefObject.)

System_CAPS_protmethodCreateWaitHandle()

Obsoleto.Asigna un objeto WaitHandle.

System_CAPS_pubmethodDispose()

Libera todos los recursos usados por 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 actual MarshalByRefObject objeto.(Heredado de MarshalByRefObject.)

System_CAPS_protmethodObjectInvariant()

Obsoleto. Esta API admite la infraestructura de product y no está pensada para usarse directamente desde su 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()

Retorna 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, descargue la referencia para verla sin conexión y recorrer (incluidas las revisiones y actualizaciones) durante la depuración; see instructions.

Stream es 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 de secuencias. La lectura es la transferencia de datos desde una secuencia a una estructura de datos, como una matriz de bytes.

  • Puede escribir en secuencias. La 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 una secuencia. Buscar capacidad depende del tipo de almacén de respaldo que posea una secuencia. Por ejemplo, secuencias de red no concepto unificado de una posición actual y, por tanto, no suelen admitir búsquedas.

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

Según el origen de datos subyacente o el repositorio, secuencias pueden admitir solo algunas de estas capacidades. Puede consultar una secuencia 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 secuencias que admiten búsquedas, utilice la Seek y SetLength métodos y 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, debería eliminar, directa o indirectamente. Para deshacerse del tipo directamente, llame a su Dispose método en un try/catch bloque. Para deshacerse de él indirectamente, usar una construcción de lenguaje como using (en C#) o Using (en Visual Basic). Para obtener más información, consulte la sección "Uso de un objeto que implementa IDisposable" en el IDisposable tema de la interfaz.

Eliminar un Stream objeto vacía los datos almacenados en búfer y básicamente llama el Flush método. Dispose También libera recursos del sistema operativo como identificadores de archivos, conexiones de red o la memoria utilizada para búferes internos. La BufferedStream clase proporciona la capacidad de ajuste de una secuencia 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 utilizan junto con el async y await palabras clave en Visual Basic y C#.

Cuando se utiliza en un Tienda Windows 8.x app, Stream incluye dos métodos de extensión: AsInputStream y AsOutputStream. Estos métodos convierten un Stream objeto a una secuencia en la Windows en tiempo de ejecución. También puede convertir una secuencia en el Windows en tiempo de ejecución para un Stream objeto usando el 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 una secuencia sin almacén de respaldo (también conocido como un depósito de bits), use el Null campo para recuperar una instancia de una secuencia que está diseñada para este propósito.

Notas para los implementadores:

Cuando se implementa una clase derivada de Stream, se deben proporcionar implementaciones para los 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 las implementaciones de Read y Write. Al derivar de Stream, se recomienda reemplazar estos métodos para tener acceso al búfer interno y, si tiene uno, para mejorar considerablemente el rendimiento. También debe proporcionar implementaciones de CanRead, CanSeek, CanWrite, Flush, Length, Position, Seek, y SetLength.

No reemplazan el Close (método), en su lugar, coloque todos los Stream lógica de limpieza en el Dispose (método). Para obtener más información, consulta Implementing a Dispose Method.

En el ejemplo siguiente se muestra cómo utilizar dos FileStream objetos para copiar los archivos de forma asincrónica desde un directorio en 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.

using System;
using System.Threading.Tasks;
using System.Windows;
using System.IO;

namespace WpfApplication
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            string StartDirectory = @"c:\Users\exampleuser\start";
            string EndDirectory = @"c:\Users\exampleuser\end";

            foreach (string filename in Directory.EnumerateFiles(StartDirectory))
            {
                using (FileStream SourceStream = File.Open(filename, FileMode.Open))
                {
                    using (FileStream DestinationStream = File.Create(EndDirectory + filename.Substring(filename.LastIndexOf('\\'))))
                    {
                        await SourceStream.CopyToAsync(DestinationStream);
                    }
                }
            }
        }
    }
}

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

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Volver al principio
Mostrar:
© 2016 Microsoft