Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés
Esta documentación está archivada y no tiene mantenimiento.

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 encapsula el objeto FileStream actual.
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 lectura asincrónica. (Invalida a Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)).

En XNA Framework 3.0, este miembro se hereda de Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).
Método públicoCompatible con XNA FrameworkBeginWriteComienza una escritura asincrónica. (Invalida a Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)).

En 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 ésta. (Se hereda de Stream).
Método públicoCopyTo(Stream)Lee los bytes de la secuencia actual y los escribe en una 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 una secuencia de destino, utilizando el tamaño de búfer especificado. (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 el objeto 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 lectura asincrónica que se encuentra pendiente. (Invalida a Stream.EndRead(IAsyncResult)).

En XNA Framework 3.0, este miembro se hereda de Stream.EndRead(IAsyncResult).
Método públicoCompatible con XNA FrameworkEndWriteTermina una escritura asincrónica, que se bloquea hasta que se ha completado la operación de E/S. (Invalida a Stream.EndWrite(IAsyncResult)).

En XNA Framework 3.0, este miembro se hereda de Stream.EndWrite(IAsyncResult).
Método públicoCompatible con XNA FrameworkEquals(Object)Determina si el objeto Object especificado es igual al objeto Object 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ú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 FrameworkGetHashCodeActúa como función hash para un tipo concreto. (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 FrameworkGetTypeObtiene el objeto 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 objeto 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. 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ú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 FrameworkToStringDevuelve una cadena que representa el 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 esta secuencia mediante el uso de datos de un búfer. (Invalida a Stream.Write(Byte[], Int32, Int32)).
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, así como para manipular otros identificadores del sistema operativo relacionados con archivos, incluidos los de canalizaciones, entrada estándar y salida estándar. Puede especificar las operaciones de lectura y escritura para ser sincrónico o asincrónico. FileStream almacena en búfer la entrada y salida para mejor rendimiento.

Los objetos FileStream admiten el acceso aleatorio a los archivos mediante el método Seek. 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 byte es relativo al punto de referencia de búsqueda, que puede ser el comienzo, la posición actual o el final del archivo subyacente, según lo representado por las tres propiedades de la clase SeekOrigin.

NotaNota

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

Aunque los métodos sincrónicos Read y Write, y los métodos asincrónicos BeginRead, BeginWrite, EndRead y EndWrite pueden funcionar en modo sincrónico o asincrónico, el modo afecta al rendimiento de estos métodos. De forma predeterminada, FileStream abre los archivos sincrónicamente, pero proporciona el constructor FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) para abrirlos asincrónicamente.

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

Para obtener información sobre las operaciones de directorio y otros archivos, vea las clases File, Directory y Path. La clase File es una clase de utilidad con métodos estáticos dedicados principalmente a la creación de objetos FileStream según las rutas de acceso de archivo y la entrada estándar, la salida estándar y los dispositivos de error estándar. La clase MemoryStream crea una secuencia a partir de una matriz de bytes y funciona de manera similar a FileStream.

Para obtener una lista de tareas comunes de E/S, vea Tareas de E/S comunes.

Detección de cambios de posición en 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 FileStream realiza comprobaciones de manera rutinaria en los métodos que obtienen acceso al búfer almacenado en memoria caché para garantizar que la posición del identificador del sistema operativo es la misma que la posición almacenada en caché utilizada por el objeto 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 se detecta un cambio inesperado en la posición del identificador en una llamada al método Write, el contenido del búfer se descarta y se produce una excepción 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);
    }
}


En el ejemplo siguiente se abre un archivo o se crea si todavía no existe, y se agrega información al final del archivo.


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

class FSOpenWrite
{
    public static void Main()
    {
        FileStream fs=new FileStream("c:\\Variables.txt", FileMode.Append, FileAccess.Write, FileShare.Write);
        fs.Close();
        StreamWriter sw=new StreamWriter("c:\\Variables.txt", true, Encoding.ASCII);
        string NextLine="This is the appended line.";
        sw.Write(NextLine);
        sw.Close();
    }
}


.NET Framework

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

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2

.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 static (Shared en Visual Basic) públicos 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.
Mostrar: