Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original.
Traducción
Original
Este tema aún no ha recibido ninguna valoración - Valorar este tema

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.

  Nombre Descripción
Método público FileStream(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úblico FileStream(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úblico Compatible con XNA Framework FileStream(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úblico FileStream(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úblico FileStream(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úblico Compatible con XNA Framework FileStream(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úblico FileStream(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úblico FileStream(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úblico Compatible con XNA Framework FileStream(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úblico FileStream(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úblico Compatible con XNA Framework FileStream(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úblico Compatible con XNA Framework FileStream(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úblico FileStream(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úblico FileStream(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úblico FileStream(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
  Nombre Descripción
Propiedad pública Compatible con XNA Framework CanRead Obtiene un valor que indica si la secuencia actual admite lectura. (Invalida a Stream.CanRead).
Propiedad pública Compatible con XNA Framework CanSeek Obtiene un valor que indica si la secuencia actual admite operaciones Seek. (Invalida a Stream.CanSeek).
Propiedad pública Compatible con XNA Framework CanTimeout Obtiene un valor que determina si se puede agotar el tiempo de espera de la secuencia actual. (Se hereda de Stream).
Propiedad pública Compatible con XNA Framework CanWrite Obtiene un valor que indica si la secuencia actual admite escritura. (Invalida a Stream.CanWrite).
Propiedad pública Handle Obsoleto. Obtiene el identificador de archivo del sistema operativo correspondiente al archivo que el objeto FileStream encapsula.
Propiedad pública Compatible con XNA Framework IsAsync Obtiene un valor que indica si se abrió FileStream de forma sincrónica o asincrónica.
Propiedad pública Compatible con XNA Framework Length Devuelve la longitud en bytes del flujo. (Invalida a Stream.Length).
Propiedad pública Compatible con XNA Framework Name Obtiene el nombre del FileStream que se pasó al constructor.
Propiedad pública Compatible con XNA Framework Position Obtiene o establece la posición actual de esta secuencia. (Invalida a Stream.Position).
Propiedad pública Compatible con XNA Framework ReadTimeout 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. (Se hereda de Stream).
Propiedad pública SafeFileHandle Obtiene un objeto SafeFileHandle que representa el identificador de archivos del sistema operativo correspondiente al archivo que encapsula el objeto FileStream actual.
Propiedad pública Compatible con XNA Framework WriteTimeout 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. (Se hereda de Stream).
Arriba
  Nombre Descripción
Método público Compatible con XNA Framework BeginRead Comienza 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úblico Compatible con XNA Framework BeginWrite Comienza 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úblico Compatible con XNA Framework Close Cierra la secuencia actual y libera todos los recursos (como sockets e identificadores de archivo) asociados a ésta. (Se hereda de Stream).
Método público CopyTo(Stream) Lee los bytes de la secuencia actual y los escribe en una secuencia de destino. (Se hereda de Stream).
Método público CopyTo(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úblico CreateObjRef Crea 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 protegido Compatible con XNA Framework CreateWaitHandle Obsoleto. Asigna un objeto WaitHandle. (Se hereda de Stream).
Método público Compatible con XNA Framework Dispose() Libera todos los recursos utilizados por el objeto Stream. (Se hereda de Stream).
Método protegido Compatible con XNA Framework Dispose(Boolean) Libera los recursos no administrados que FileStream utiliza y, opcionalmente, libera los recursos administrados. (Invalida a Stream.Dispose(Boolean)).
Método público Compatible con XNA Framework EndRead Espera 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úblico Compatible con XNA Framework EndWrite Termina 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úblico Compatible con XNA Framework Equals(Object) Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object).
Método protegido Compatible con XNA Framework Finalize Garantiza 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úblico Compatible con XNA Framework Flush() 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úblico Flush(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úblico GetAccessControl Obtiene 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úblico Compatible con XNA Framework GetHashCode Actúa como función hash para un tipo concreto. (Se hereda de Object).
Método público GetLifetimeService Recupera 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úblico Compatible con XNA Framework GetType Obtiene el objeto Type de la instancia actual. (Se hereda de Object).
Método público InitializeLifetimeService Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia. (Se hereda de MarshalByRefObject).
Método público Lock Impide que otros procesos lean de FileStream o escriban en él.
Método protegido Compatible con XNA Framework MemberwiseClone() Crea una copia superficial del objeto Object actual. (Se hereda de Object).
Método protegido MemberwiseClone(Boolean) Crea una copia superficial del objeto MarshalByRefObject actual. (Se hereda de MarshalByRefObject).
Método protegido ObjectInvariant Infraestructura. Proporciona compatibilidad con una clase Contract. (Se hereda de Stream).
Método público Compatible con XNA Framework Read Lee 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úblico Compatible con XNA Framework ReadByte Lee un byte del archivo y avanza la posición de lectura un byte. (Invalida a Stream.ReadByte()).
Método público Compatible con XNA Framework Seek Establece la posición actual de esta secuencia actual en el valor dado. (Invalida a Stream.Seek(Int64, SeekOrigin)).
Método público SetAccessControl Aplica 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úblico Compatible con XNA Framework SetLength Establece la longitud de esta secuencia en el valor dado. (Invalida a Stream.SetLength(Int64)).
Método público Compatible con XNA Framework ToString Devuelve una cadena que representa el objeto actual. (Se hereda de Object).
Método público Unlock Permite que otros procesos tengan acceso total o parcial a un archivo previamente bloqueado.
Método público Compatible con XNA Framework Write Escribe 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úblico Compatible con XNA Framework WriteByte Escribe 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.

Nota Nota

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.
¿Le ha resultado útil?
(Caracteres restantes: 1500)
Contenido de la comunidad Agregar