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
|
FileStream (Clase)
Expone un objeto Stream alrededor de un archivo; se admiten operaciones de lectura y escritura sincrónica y asincrónica.
Ensamblado: mscorlib (en mscorlib.dll)
El tipo FileStream expone los siguientes miembros.
| Nombre | Descripción | |
|---|---|---|
|
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. |
|
FileStream(SafeFileHandle, FileAccess) | Inicializa una nueva instancia de la clase FileStream para el identificador de archivo especificado, con el permiso de lectura/escritura establecido. |
|
FileStream(String, FileMode) | Inicializa una nueva instancia de la clase FileStream con el modo de creación y la ruta de acceso especificados. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
| Nombre | Descripción | |
|---|---|---|
|
CanRead | Obtiene un valor que indica si la secuencia actual admite lectura. (Invalida a Stream.CanRead). |
|
CanSeek | Obtiene un valor que indica si la secuencia actual admite operaciones Seek. (Invalida a Stream.CanSeek). |
|
CanTimeout | Obtiene un valor que determina si se puede agotar el tiempo de espera de la secuencia actual. (Se hereda de Stream). |
|
CanWrite | Obtiene un valor que indica si la secuencia actual admite escritura. (Invalida a Stream.CanWrite). |
|
Handle | Obsoleto. Obtiene el identificador de archivo del sistema operativo correspondiente al archivo que el objeto FileStream encapsula. |
|
IsAsync | Obtiene un valor que indica si se abrió FileStream de forma sincrónica o asincrónica. |
|
Length | Devuelve la longitud en bytes del flujo. (Invalida a Stream.Length). |
|
Name | Obtiene el nombre del FileStream que se pasó al constructor. |
|
Position | Obtiene o establece la posición actual de esta secuencia. (Invalida a Stream.Position). |
|
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). |
|
SafeFileHandle | Obtiene un objeto SafeFileHandle que representa el identificador de archivos del sistema operativo correspondiente al archivo que encapsula el objeto FileStream actual. |
|
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). |
| Nombre | Descripción | |
|---|---|---|
|
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). |
|
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). |
|
Close | Cierra la secuencia actual y libera todos los recursos (como sockets e identificadores de archivo) asociados a ésta. (Se hereda de Stream). |
|
CopyTo(Stream) | Lee los bytes de la secuencia actual y los escribe en una secuencia de destino. (Se hereda de Stream). |
|
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). |
|
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). |
|
CreateWaitHandle | Obsoleto. Asigna un objeto WaitHandle. (Se hereda de Stream). |
|
Dispose() | Libera todos los recursos utilizados por el objeto Stream. (Se hereda de Stream). |
|
Dispose(Boolean) | Libera los recursos no administrados que FileStream utiliza y, opcionalmente, libera los recursos administrados. (Invalida a Stream.Dispose(Boolean)). |
|
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). |
|
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). |
|
Equals(Object) | Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object). |
|
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()). |
|
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()). |
|
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. |
|
GetAccessControl | Obtiene un objeto FileSecurity que encapsula las entradas de lista de control de acceso (ACL) del archivo descrito por el objeto FileStream actual. |
|
GetHashCode | Actúa como función hash para un tipo concreto. (Se hereda de Object). |
|
GetLifetimeService | Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia. (Se hereda de MarshalByRefObject). |
|
GetType | Obtiene el objeto Type de la instancia actual. (Se hereda de Object). |
|
InitializeLifetimeService | Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia. (Se hereda de MarshalByRefObject). |
|
Lock | Impide que otros procesos lean de FileStream o escriban en él. |
|
MemberwiseClone() | Crea una copia superficial del objeto Object actual. (Se hereda de Object). |
|
MemberwiseClone(Boolean) | Crea una copia superficial del objeto MarshalByRefObject actual. (Se hereda de MarshalByRefObject). |
|
ObjectInvariant | Infraestructura. Proporciona compatibilidad con una clase Contract. (Se hereda de Stream). |
|
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)). |
|
ReadByte | Lee un byte del archivo y avanza la posición de lectura un byte. (Invalida a Stream.ReadByte()). |
|
Seek | Establece la posición actual de esta secuencia actual en el valor dado. (Invalida a Stream.Seek(Int64, SeekOrigin)). |
|
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. |
|
SetLength | Establece la longitud de esta secuencia en el valor dado. (Invalida a Stream.SetLength(Int64)). |
|
ToString | Devuelve una cadena que representa el objeto actual. (Se hereda de Object). |
|
Unlock | Permite que otros procesos tengan acceso total o parcial a un archivo previamente bloqueado. |
|
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)). |
|
WriteByte | Escribe un byte en la posición actual de la secuencia de archivo. (Invalida a Stream.WriteByte(Byte)). |
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
|
|---|
|
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(); } }
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.
Nota