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

FileStream (Clase)

Expone un objeto Stream alrededor de un archivo; se admiten operaciones de lectura y escritura sincrónica y asincrónica.

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

[ComVisibleAttribute(true)]
public class FileStream : Stream

El tipo FileStream expone los siguientes miembros.

  NombreDescripción
Método públicoFileStream(IntPtr, FileAccess) Obsoleto. Inicializa una nueva instancia de la clase FileStream para el identificador de archivo especificado, con el permiso de lectura/escritura establecido.
Método públicoFileStream(SafeFileHandle, FileAccess)Inicializa una nueva instancia de la clase FileStream para el identificador de archivo especificado, con el permiso de lectura/escritura establecido.
Método públicoCompatible con XNA FrameworkFileStream(String, FileMode)Inicializa una nueva instancia de la clase FileStream con el modo de creación y la ruta de acceso especificados.
Método públicoFileStream(IntPtr, FileAccess, Boolean) Obsoleto. Inicializa una nueva instancia de la clase FileStream para el identificador de archivo especificado, con el permiso de lectura/escritura establecido y la propiedad de la instancia de FileStream.
Método públicoFileStream(SafeFileHandle, FileAccess, Int32)Inicializa una nueva instancia de la clase FileStream para el identificador de archivo especificado, con el tamaño de búfer y el permiso de lectura y escritura especificados.
Método públicoCompatible con XNA FrameworkFileStream(String, FileMode, FileAccess)Inicializa una nueva instancia de la clase FileStream con el permiso de lectura/escritura, el modo de creación y la ruta de acceso especificados.
Método públicoFileStream(IntPtr, FileAccess, Boolean, Int32) Obsoleto. Inicializa una nueva instancia de la clase FileStream para el identificador de archivo especificado, con el tamaño de búfer, la propiedad de la instancia de FileStream y el permiso de lectura/escritura especificados.
Método públicoFileStream(SafeFileHandle, FileAccess, Int32, Boolean)Inicializa una nueva instancia de la clase FileStream para el identificador de archivo especificado, y con el permiso de lectura y escritura, el tamaño de búfer y el estado sincrónico o asincrónico especificados.
Método públicoCompatible con XNA FrameworkFileStream(String, FileMode, FileAccess, FileShare)Inicializa una nueva instancia de la clase FileStream con el permiso de uso compartido, el permiso de lectura/escritura, el modo de creación y la ruta de acceso especificados.
Método públicoFileStream(IntPtr, FileAccess, Boolean, Int32, Boolean) Obsoleto. Inicializa una nueva instancia de la clase FileStream para el identificador de archivo especificado, con el estado sincrónico o asincrónico, el tamaño de búfer, la propiedad de la instancia de FileStream y el permiso de lectura/escritura especificados.
Método públicoCompatible con XNA FrameworkFileStream(String, FileMode, FileAccess, FileShare, Int32)Inicializa una nueva instancia de la clase FileStream con el tamaño de búfer, el permiso de lectura/escritura y de uso compartido, el modo de creación y la ruta de acceso especificados.
Método públicoCompatible con XNA FrameworkFileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean)Inicializa una nueva instancia de la clase FileStream con el estado sincrónico o asincrónico, el tamaño de búfer, el permiso de lectura/escritura y de uso compartido, el modo de creación y la ruta de acceso especificados.
Método públicoFileStream(String, FileMode, FileAccess, FileShare, Int32, FileOptions)Inicializa una nueva instancia de la clase FileStream con la ruta de acceso, el modo de creación, los permisos de lectura y escritura y de uso compartido, el acceso que otras secuencias de archivos pueden tener al mismo archivo, el tamaño del búfer y otras opciones de archivo que se hayan especificado.
Método públicoFileStream(String, FileMode, FileSystemRights, FileShare, Int32, FileOptions)Inicializa una nueva instancia de la clase FileStream con la ruta de acceso, el modo de creación, los derechos de acceso y el permiso de uso compartido, el tamaño de búfer y opciones de archivo adicionales que se hayan especificado.
Método públicoFileStream(String, FileMode, FileSystemRights, FileShare, Int32, FileOptions, FileSecurity)Inicializa una nueva instancia de la clase FileStream con la ruta de acceso, el modo de creación, los derechos de acceso y el permiso de uso compartido, el tamaño de búfer, las opciones de archivo adicionales, el control de acceso y la seguridad de auditoría que se hayan especificado.
Arriba

  NombreDescripción
Propiedad públicaCompatible con XNA FrameworkCanReadObtiene un valor que indica si la secuencia actual admite lectura. (Invalida a Stream.CanRead).
Propiedad públicaCompatible con XNA FrameworkCanSeekObtiene un valor que indica si la secuencia actual admite operaciones Seek. (Invalida a Stream.CanSeek).
Propiedad públicaCompatible con XNA FrameworkCanTimeoutObtiene un valor que determina si se puede agotar el tiempo de espera de la secuencia actual. (Se hereda de Stream).
Propiedad públicaCompatible con XNA FrameworkCanWriteObtiene un valor que indica si la secuencia actual admite escritura. (Invalida a Stream.CanWrite).
Propiedad públicaHandle Obsoleto. Obtiene el identificador de archivo del sistema operativo correspondiente al archivo que el objeto FileStream encapsula.
Propiedad públicaCompatible con XNA FrameworkIsAsyncObtiene un valor que indica si se abrió FileStream de forma sincrónica o asincrónica.
Propiedad públicaCompatible con XNA FrameworkLengthDevuelve la longitud en bytes del flujo. (Invalida a Stream.Length).
Propiedad públicaCompatible con XNA FrameworkNameObtiene el nombre del FileStream que se pasó al constructor.
Propiedad públicaCompatible con XNA FrameworkPositionObtiene o establece la posición actual de esta secuencia. (Invalida a Stream.Position).
Propiedad públicaCompatible con XNA FrameworkReadTimeoutObtiene 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. (Se hereda de Stream).
Propiedad públicaSafeFileHandleObtiene un objeto SafeFileHandle que representa el identificador de archivos del sistema operativo correspondiente al archivo que el actual objeto FileStream encapsula.
Propiedad públicaCompatible con XNA FrameworkWriteTimeoutObtiene 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. (Se hereda de Stream).
Arriba

  NombreDescripción
Método públicoCompatible con XNA FrameworkBeginReadComienza una operación de lectura asincrónica. (Utilice ReadAsync en su lugar; vea la sección comentarios.) (Invalida a Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)).

In XNA Framework 3.0, este miembro se hereda de Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).
Método públicoCompatible con XNA FrameworkBeginWriteComienza una operación de escritura asincrónica. (Utilice WriteAsync en su lugar; vea la sección comentarios.) (Invalida a Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)).

In XNA Framework 3.0, este miembro se hereda de Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object).
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. (Se hereda de Stream).
Método públicoCopyTo(Stream)Lee los bytes de la secuencia actual y los escribe en otra secuencia de destino. (Se hereda de Stream).
Método públicoCopyTo(Stream, Int32)Lee todos los bytes de la secuencia actual y los escribe en otra secuencia, usando el tamaño de búfer especificado. (Se hereda de Stream).
Método públicoCopyToAsync(Stream)Lee asincrónicamente todos los bytes de la secuencia actual y los escribe en otra secuencia. (Se hereda de Stream).
Método públicoCopyToAsync(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. (Se hereda de Stream).
Método públicoCopyToAsync(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. (Se hereda de Stream).
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. (Se hereda de Stream).
Método públicoCompatible con XNA FrameworkDispose()Libera todos los recursos utilizados por Stream. (Se hereda de Stream).
Método protegidoCompatible con XNA FrameworkDispose(Boolean)Libera los recursos no administrados que FileStream utiliza y, opcionalmente, libera los recursos administrados. (Invalida a Stream.Dispose(Boolean)).
Método públicoCompatible con XNA FrameworkEndReadEspera a que se complete la operación asincrónica de lectura que se encuentra pendiente. (Utilice ReadAsync en su lugar; vea la sección comentarios.) (Invalida a Stream.EndRead(IAsyncResult)).

In XNA Framework 3.0, este miembro se hereda de Stream.EndRead(IAsyncResult).
Método públicoCompatible con XNA FrameworkEndWriteTermina una operación de escritura asincrónica y se bloquea hasta que se completa la operación de E/S. (Utilice WriteAsync en su lugar; vea la sección comentarios.) (Invalida a Stream.EndWrite(IAsyncResult)).

In XNA Framework 3.0, este miembro se hereda de Stream.EndWrite(IAsyncResult).
Método públicoCompatible con XNA FrameworkEquals(Object)Determina si el objeto especificado es igual al objeto actual. (Se hereda de Object).
Método protegidoCompatible con XNA FrameworkFinalizeGarantiza que se liberan los recursos y se realizan otras operaciones de limpieza cuando el recolector de elementos no utilizados reclama FileStream. (Invalida a Object.Finalize()).
Método públicoCompatible con XNA FrameworkFlush()Borra los búferes de esta secuencia y hace que todos los datos almacenados en los búferes se escriban en el archivo. (Invalida a Stream.Flush()).
Método públicoFlush(Boolean)Borra los búferes de esta secuencia, hace que todos los datos almacenados en los búferes se escriban en el archivo y borra también todos los búferes de archivos intermedios.
Método públicoFlushAsync()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. (Se hereda de Stream).
Método públicoFlushAsync(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. (Invalida a Stream.FlushAsync(CancellationToken)).
Método públicoGetAccessControlObtiene un objeto FileSecurity que encapsula las entradas de lista de control de acceso (ACL) del archivo descrito por el objeto FileStream actual.
Método públicoCompatible con XNA FrameworkGetHashCode 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 FrameworkGetType 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 públicoLockImpide que otros procesos lean de FileStream o escriban en él.
Método protegidoCompatible con XNA FrameworkMemberwiseClone() 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. (Se hereda de Stream).
Método públicoCompatible con XNA FrameworkReadLee un bloque de bytes de la secuencia y escribe los datos en un búfer dado. (Invalida a Stream.Read(Byte[], Int32, Int32)).
Método públicoReadAsync(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. (Se hereda de Stream).
Método públicoReadAsync(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. (Invalida a Stream.ReadAsync(Byte[], Int32, Int32, CancellationToken)).
Método públicoCompatible con XNA FrameworkReadByteLee un byte del archivo y avanza la posición de lectura un byte. (Invalida a Stream.ReadByte()).
Método públicoCompatible con XNA FrameworkSeekEstablece la posición actual de esta secuencia actual en el valor dado. (Invalida a Stream.Seek(Int64, SeekOrigin)).
Método públicoSetAccessControlAplica las entradas de la lista de control de acceso (ACL) descritas por un objeto FileSecurity al archivo descrito por el objeto FileStream actual.
Método públicoCompatible con XNA FrameworkSetLengthEstablece la longitud de esta secuencia en el valor dado. (Invalida a Stream.SetLength(Int64)).
Método públicoCompatible con XNA FrameworkToString Retorna una cadena que representa al objeto actual. (Se hereda de Object).
Método públicoUnlockPermite que otros procesos tengan acceso total o parcial a un archivo previamente bloqueado.
Método públicoCompatible con XNA FrameworkWriteEscribe un bloque de bytes en la secuencia de archivo. (Invalida a Stream.Write(Byte[], Int32, Int32)).
Método públicoWriteAsync(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. (Se hereda de Stream).
Método públicoWriteAsync(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. (Invalida a Stream.WriteAsync(Byte[], Int32, Int32, CancellationToken)).
Método públicoCompatible con XNA FrameworkWriteByteEscribe un byte en la posición actual de la secuencia de archivo. (Invalida a Stream.WriteByte(Byte)).
Arriba

Utilice la clase FileStream para leer, escribir, abrir y cerrar archivos en un sistema de archivos, y manipular otros manejadores relacionados con archivos del sistema operativo, incluyendo entrada estándar, y salida estándar. Puede utilizar Read, Write, CopyTo, y los métodos de Flush para realizar operaciones síncronas, o ReadAsync, WriteAsync, CopyToAsync, y los métodos de FlushAsync para realizar operaciones asincrónicas. Utilice los métodos asincrónicos para realizar operaciones de archivo recurso- intensivas sin bloquear el subproceso principal. Esta consideración de rendimiento es especialmente importante en una aplicación de Tienda Windows o la aplicación de escritorio donde una operación larga de la secuencia puede bloquear el subproceso de la interfaz de usuario y crear que aparece la aplicación como si no funciona. FileStream almacena en búfer la entrada y salida para mejor rendimiento.

La propiedad de IsAsync detecta si el identificador de archivo se ha abierto de forma asincrónica. Especifica este valor cuando se crea una instancia de la clase de FileStream mediante un constructor con isAsync, useAsync, o parámetro de options . Cuando la propiedad es true, la secuencia utiliza E/S superpuesta para realizar operaciones de archivo de forma asincrónica. Sin embargo, la propiedad de IsAsync no tiene que ser true para llamar a ReadAsync, WriteAsync, o un método de CopyToAsync . Cuando la propiedad de IsAsync es false y la lectura asincrónica y las operaciones de escritura, el subproceso de la interfaz de usuario aún no está bloqueado, pero la operación de E/S real se realiza de forma sincrónica.

El método de Seek admite el acceso aleatorio a los archivos. Seek permite que se mueva la posición de lectura/escritura a cualquier posición dentro del archivo. Esto se realiza mediante parámetros de punto de referencia de desplazamiento de byte. El desplazamiento de bytes es relativo al punto de referencia de búsqueda, que puede ser el inicio, la posición actual, o el final del archivo subyacente, como se representa por los tres miembros de la enumeración de SeekOrigin .

NotaNota

Los archivos de disco siempre admiten el acceso aleatorio. En el momento de la construcción, el valor de propiedad de CanSeek se establece en true o a false según el tipo de archivo subyacente. Si el tipo de archivo subyacente es FILE_TYPE_DISK, según winbase.h, el valor de propiedad de CanSeek es true. En caso contrario, el valor de la propiedad CanSeek es false.

Si un proceso termina con parte de un archivo bloqueado o cierra un archivo que tiene bloqueos pendientes, el comportamiento no estará definido.

Para las operaciones de directorio y otras operaciones de archivo, vea File, Directory, y las clases de Path . La clase de File es una clase de utilidad que tiene métodos estáticos principalmente para la creación de objetos de FileStream basándose en las rutas de acceso. La clase de MemoryStream crea una secuencia de una matriz de bytes que es similar a la clase de FileStream .

Para obtener una lista de operaciones de archivo comunes y directorio, vea Tareas de E/S comunes.

Detección de cambios de la posición de la secuencia

Cuando un objeto FileStream no tiene control exclusivo sobre su identificador, otro subproceso podría tener acceso al identificador del archivo al mismo tiempo y cambiar la posición del puntero de archivos del sistema operativo que está asociado con el identificador del archivo. En este caso, podría verse comprometida la posición almacenada en memoria caché del objeto FileStream, así como los datos almacenados en memoria caché en el búfer. El objeto de FileStream rutinario realiza comprobaciones en los métodos que tienen acceso al búfer almacenado en caché para garantizar que la posición del identificador del sistema operativo es igual que la posición almacenada en caché utilizada por el objeto de FileStream .

Si se detecta un cambio inesperado en la posición del identificador en una llamada al método Read, .NET Framework descarta el contenido del búfer y vuelve a leer la secuencia del archivo. Esto puede afectar al rendimiento, en función del tamaño del archivo y de cualquier otro proceso que pueda afectar a la posición de la secuencia del archivo.

Si un cambio inesperado en la posición del identificador se detecta en una llamada al método de Write , el contenido del búfer se descartan y se produce una excepción de IOException .

Un objeto FileStream no tiene control exclusivo sobre su identificador cuando se obtiene acceso a la propiedad SafeFileHandle para exponer el identificador o cuando el objeto FileStream recibe la propiedad SafeFileHandle de su constructor.

En el siguiente ejemplo se muestran algunos de los constructores FileStream.


using System;
using System.IO;
using System.Text;

class Test
{

    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // Delete the file if it exists.
        if (File.Exists(path))
        {
            File.Delete(path);
        }

        //Create the file.
        using (FileStream fs = File.Create(path))
        {
            AddText(fs, "This is some text");
            AddText(fs, "This is some more text,");
            AddText(fs, "\r\nand this is on a new line");
            AddText(fs, "\r\n\r\nThe following is a subset of characters:\r\n");

            for (int i=1;i < 120;i++)
            {
                AddText(fs, Convert.ToChar(i).ToString());

            }
        }

        //Open the stream and read it back.
        using (FileStream fs = File.OpenRead(path))
        {
            byte[] b = new byte[1024];
            UTF8Encoding temp = new UTF8Encoding(true);
            while (fs.Read(b,0,b.Length) > 0)
            {
                Console.WriteLine(temp.GetString(b));
            }
        }
    }

    private static void AddText(FileStream fs, string value)
    {
        byte[] info = new UTF8Encoding(true).GetBytes(value);
        fs.Write(info, 0, info.Length);
    }
}


El ejemplo siguiente muestra cómo escribir en un archivo de forma asincrónica.


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

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

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            UnicodeEncoding uniencoding = new UnicodeEncoding();
            string filename = @"c:\Users\exampleuser\Documents\userinputlog.txt";

            byte[] result = uniencoding.GetBytes(UserInput.Text);

            using (FileStream SourceStream = File.Open(filename, FileMode.OpenOrCreate))
            {
                SourceStream.Seek(0, SeekOrigin.End);
                await SourceStream.WriteAsync(result, 0, result.Length);
            }
        }
    }
}


.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

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