Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Stream (Clase)

Proporciona una vista genérica de una secuencia de bytes.

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

[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class Stream : MarshalByRefObject, 
	IDisposable

El tipo Stream expone los siguientes miembros.

  NombreDescripción
Método protegidoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsStreamInicializa una nueva instancia de la clase Stream.
Arriba

  NombreDescripción
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsCanReadCuando se reemplaza en una clase derivada, obtiene un valor que indica si la secuencia actual admite lectura.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsCanSeekCuando se reemplaza en una clase derivada, obtiene un valor que indica si la secuencia actual admite búsquedas.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsCanTimeoutObtiene un valor que determina si se puede agotar el tiempo de espera de la secuencia actual.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsCanWriteCuando se reemplaza en una clase derivada, obtiene un valor que indica si la secuencia actual admite escritura.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsLengthCuando se reemplaza en una clase derivada, obtiene el tamaño en bytes de la secuencia.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsPositionCuando se reemplaza en una clase derivada, se obtiene o se establece la posición dentro de la secuencia actual.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsReadTimeoutObtiene 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.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsWriteTimeoutObtiene 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.
Arriba

  NombreDescripción
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableBeginReadComienza una operación de lectura asincrónica. (Utilice ReadAsync en su lugar; vea la sección comentarios.)
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableBeginWriteComienza una operación de escritura asincrónica. (Considere usar WriteAsync en su lugar; vea la sección comentarios).
Método públicoCompatible con XNA FrameworkCloseCierra 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 el flujo se desecha correctamente.
Método públicoCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsCopyTo(Stream)Lee los bytes de la secuencia actual y los escribe en otra secuencia de destino.
Método públicoCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsCopyTo(Stream, Int32)Lee todos los bytes de la secuencia actual y los escribe en otra secuencia, usando el tamaño de búfer especificado.
Método públicoCompatible con .NET para aplicaciones de la Tienda WindowsCopyToAsync(Stream)Lee asincrónicamente todos los bytes de la secuencia actual y los escribe en otra secuencia.
Método públicoCompatible con .NET para aplicaciones de la Tienda WindowsCopyToAsync(Stream, Int32)Lee asincrónicamente todos los bytes de la secuencia actual y los escribe en otra secuencia, usando el tamaño de búfer especificado.
Método públicoCompatible con .NET para aplicaciones de la Tienda WindowsCopyToAsync(Stream, Int32, CancellationToken)Lee asincrónicamente los bytes de la secuencia actual y los escribe en otro flujo, utilizando el tamaño de búfer especificado y el token de cancelación.
Método públicoCreateObjRefCrea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto. (Se hereda de MarshalByRefObject).
Método protegidoCompatible con XNA FrameworkCreateWaitHandle Obsoleto. Asigna un objeto WaitHandle.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsDispose()Libera todos los recursos utilizados por Stream.
Método protegidoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsDispose(Boolean)Libera los recursos no administrados que utiliza Stream y libera los recursos administrados de forma opcional.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableEndReadEspera a que se complete la lectura asincrónica que se encuentra pendiente. (Utilice ReadAsync en su lugar; vea la sección comentarios.)
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableEndWriteFinaliza una operación de escritura asincrónica. (Considere usar WriteAsync en su lugar; vea la sección comentarios).
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsEquals(Object)Determina si el objeto especificado es igual al objeto actual. (Se hereda de Object).
Método protegidoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsFinalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsFlushAl sobrescribir 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.
Método públicoCompatible con .NET para aplicaciones de la Tienda WindowsFlushAsync()Borra asincrónicamente todos los búferes para este flujo y hace que los datos almacenados en búfer se escriban en el dispositivo subyacente.
Método públicoCompatible con .NET para aplicaciones de la Tienda WindowsFlushAsync(CancellationToken)Borra asincrónicamente todos los búferes del flujo actual y hace que todos los datos almacenados en el búfer se escriban en el dispositivo subyacente y supervisa las solicitudes de cancelación.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetHashCode Sirve como una función hash para un tipo en particular. (Se hereda de Object).
Método públicoGetLifetimeServiceRecupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia. (Se hereda de MarshalByRefObject).
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetType Obtiene el Type de la instancia actual. (Se hereda de Object).
Método públicoInitializeLifetimeServiceObtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia. (Se hereda de MarshalByRefObject).
Método protegidoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsMemberwiseClone() Crea una copia superficial del Object actual. (Se hereda de Object).
Método protegidoMemberwiseClone(Boolean)Crea una copia superficial del objeto MarshalByRefObject actual. (Se hereda de MarshalByRefObject).
Método protegidoObjectInvariantInfraestructura. Obsoleto. Proporciona compatibilidad con una clase Contract.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsReadAl reescribir 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.
Método públicoCompatible con .NET para aplicaciones de la Tienda WindowsReadAsync(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.
Método públicoCompatible con .NET para aplicaciones de la Tienda WindowsReadAsync(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.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsReadByteLee 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.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsSeekCuando se reemplaza en una clase derivada, se obtiene o se establece la posición dentro de la secuencia actual.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsSetLengthCuando se reemplaza en una clase derivada, se obtiene o se establece la posición dentro de la secuencia actual.
Método públicoMiembro estáticoSynchronizedCrea un contenedor seguro para subprocesos (sincronizado) alrededor del objeto Stream especificado.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsToString Retorna una cadena que representa al objeto actual. (Se hereda de Object).
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsWriteAl reescribir en una clase derivada, se escribe una secuencia de bytes en la secuencia actual y se hace avanzar la posición dentro de la secuencia el número de bytes escritos.
Método públicoCompatible con .NET para aplicaciones de la Tienda WindowsWriteAsync(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.
Método públicoCompatible con .NET para aplicaciones de la Tienda WindowsWriteAsync(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.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsWriteByteEscribe un byte a la posición actual en la secuencia y avanza la posición de la secuencia en un byte.
Arriba

  NombreDescripción
Método de extensión públicoCompatible con .NET para aplicaciones de la Tienda WindowsAsInputStreamConvierte una secuencia administrada en .NET para aplicaciones de la Tienda Windows a un flujo de entrada en Windows en tiempo de ejecución. (Definido por WindowsRuntimeStreamExtensions).
Método de extensión públicoCompatible con .NET para aplicaciones de la Tienda WindowsAsOutputStreamConvierte una secuencia administrada en .NET para aplicaciones de la Tienda Windows a un flujo de salida en Windows en tiempo de ejecución. (Definido por WindowsRuntimeStreamExtensions).
Arriba

  NombreDescripción
Campo públicoMiembro estáticoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsNullClase Stream sin memoria auxiliar.
Arriba

Las secuencias comprenden tres operaciones fundamentales.

  • Es posible leer información de las secuencias. La lectura es la transferencia de datos desde una secuencia a una estructura de datos, como, por ejemplo, una matriz de bytes.

  • Se puede escribir información en las secuencias. La escritura es la transferencia de datos desde una estructura de datos hasta una secuencia.

  • Las secuencias pueden admitir operaciones de búsqueda. Buscar hace referencia a consultar y a modificar la posición actual en una secuencia. La capacidad de realizar este tipo de búsquedas depende del tipo de memoria auxiliar que posea una secuencia. Por ejemplo, las secuencias de red no trabajan con un concepto unificado de "posición actual" y, por tanto, no suelen admitir búsquedas.

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

Según el origen de datos o repositorio subyacente, las secuencias pueden admitir sólo algunas de estas características. Puede ver una secuencia por sus funciones mediante CanRead, CanWrite, y las propiedades CanSeek de la clase Stream .

Los métodos Read y Write leen y escriben datos en varios formatos. Para secuencias que admiten búsquedas, se pueden utilizar los métodos Seek y SetLength, y las propiedades Position y Length para consultar y modificar la posición y longitud actuales de una secuencia.

A partir de .NET Framework 4.5, la clase Stream incluye métodos de async para simplificar operaciones asincrónicas. Un método de async contiene Async en su nombre, como ReadAsync, WriteAsync, CopyToAsync, FlushAsync. Estos métodos permiten realizar operaciones de E/S consumir muchos recursos sin bloquear el subproceso principal. Esta consideración de rendimiento es especialmente importante en una aplicación de Tienda Windows o la aplicación escritorio donde una operación larga de la secuencia puede bloquear el subproceso de interfaz de usuario y que aparece la aplicación como si no funciona. Los métodos de async se usan junto con las palabras clave async y await de Visual Basic y C#.

Cuando se utiliza en una aplicación Tienda Windows , Stream incluye dos métodos de extensión: AsInputStream y AsOutputStream. Estos métodos convierten un objeto Stream en una secuencia en Windows en tiempo de ejecución. También puede convertir una secuencia en Windows en tiempo de ejecución a un objeto Stream utilizando los métodos AsStreamForRead y AsStreamForWrite .

Algunas implementaciones de secuencia almacenan los datos subyacentes en un búfer local para mejorar el rendimiento. Para tales secuencias, puede utilizar el método Flush o FlushAsync para borrar cualquier búfer interno y garantizar que todos los datos se ha escrito al origen de datos o al repositorio subyacente.

La eliminación de un objeto Stream vuelca los datos almacenados en búfer, y esencialmente llama al método Flush . Dispose también libera los recursos del sistema operativo como identificadores de archivos, conexiones de red o memoria usados para cualquier almacenamiento en búfer interno. La clase BufferedStream permite que una secuencia pueda estar contenida en otra secuencia almacenada en búfer con el fin de mejorar el rendimiento de lectura y escritura.

Si necesita transmitir sin la memoria auxiliar (también conocido como depósito de bit), utilice el campo Null para recuperar una instancia de una secuencia diseñada para este fin.

Notas para los implementadores

Cuando implemente una clase derivada de Stream, debe proporcionar las implementaciones para los métodos Read y Write . Los métodos asincrónicos ReadAsync, WriteAsync, y CopyToAsync utilizan los métodos sincrónicos Read y Write en sus implementaciones. Por consiguiente, las implementaciones Read y Write funcionan correctamente con métodos asincrónicos. Las implementaciones predeterminadas de ReadByte y WriteByte crean una nueva matriz de bytes de un solo elemento y, después, llaman a las implementaciones de Read y Write. Cuando derive de Stream, recomendamos reemplazar estos métodos para tener acceso al búfer interno, si tiene uno, para notablemente el rendimiento mejor. También se deben proporcionar implementaciones de CanRead, CanSeek, CanWrite, Flush, Length, Position, Seek y SetLength.

No reemplace el método Close , en lugar, coloque toda la lógica de limpieza Stream en el método Dispose . Para obtener más información, vea Implementar un método Dispose.

TopicLocation
Cómo: Escribir texto en un archivoFundamentos de programación en .NET Framework
Cómo: Leer texto de un archivoFundamentos de programación en .NET Framework
Cómo: Escribir texto en un archivoFundamentos de programación en .NET Framework
Cómo: Leer texto de un archivoFundamentos de programación en .NET Framework

El ejemplo siguiente muestra cómo utilizar dos objetos FileStream de forma asincrónica para copiar los archivos de un directorio en otro directorio. La clase FileStream se deriva de la clase Stream. Observe que marcan el controlador de eventos Click para el control Button 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);
                    }
                }
            }
        }
    }
}


.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

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

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft