E/S de archivos y secuenciasFile and Stream I/O

La E/S (entrada/salida) de archivos y secuencias hace referencia a la transferencia de datos con destino u origen en un medio de almacenamiento.File and stream I/O (input/output) refers to the transfer of data either to or from a storage medium. En .NET Framework, los espacios de nombres System.IO contienen tipos que permiten la lectura y escritura, tanto sincrónica como asincrónica, en archivos y flujos de datos.In the .NET Framework, the System.IO namespaces contain types that enable reading and writing, both synchronously and asynchronously, on data streams and files. Estos espacios de nombres también contienen tipos que realizan la compresión y la descompresión de archivos, así como tipos que permiten la comunicación a través de canalizaciones y puertos de serie.These namespaces also contain types that perform compression and decompression on files, and types that enable communication through pipes and serial ports.

Un archivo es una colección de bytes ordenada y con nombre que tiene un almacenamiento persistente.A file is an ordered and named collection of bytes that has persistent storage. Cuando se trabaja con archivos, se opera con las rutas de acceso de directorios, almacenamiento en disco y nombres de archivo y de directorio.When you work with files, you work with directory paths, disk storage, and file and directory names. En cambio, una secuencia es una sucesión de bytes que se puede utilizar para leer y escribir en una memoria auxiliar, que puede ser uno de los distintos tipos de medios de almacenamiento (por ejemplo, discos o memoria).In contrast, a stream is a sequence of bytes that you can use to read from and write to a backing store, which can be one of several storage mediums (for example, disks or memory). Al igual que hay varios tipos de memorias auxiliares distintas de los discos, existen varios tipos de secuencias distintas de las secuencias de archivo, como las secuencias de red, de memoria y de canalización.Just as there are several backing stores other than disks, there are several kinds of streams other than file streams, such as network, memory, and pipe streams.

Archivos y directoriosFiles and Directories

Se pueden utilizar los tipos del espacio de nombres System.IO para interactuar con archivos y directorios.You can use the types in the System.IO namespace to interact with files and directories. Por ejemplo, se pueden obtener y establecer las propiedades de los archivos y directorios, y recuperar colecciones de archivos y de directorios basándose en criterios de búsqueda.For example, you can get and set properties for files and directories, and retrieve collections of files and directories based on search criteria.

Estas son algunas clases de archivo y directorio de uso general:Here are some commonly used file and directory classes:

  • File: proporciona métodos estáticos para crear, copiar, eliminar, mover y abrir archivos, y ayuda a crear un objeto FileStream.File - provides static methods for creating, copying, deleting, moving, and opening files, and helps create a FileStream object.

  • FileInfo: proporciona métodos de instancia para crear, copiar, eliminar, mover y abrir archivos, y ayuda a crear un objeto FileStream.FileInfo - provides instance methods for creating, copying, deleting, moving, and opening files, and helps create a FileStream object.

  • Directory: proporciona métodos estáticos para crear, mover y enumerar directorios y subdirectorios.Directory - provides static methods for creating, moving, and enumerating through directories and subdirectories.

  • DirectoryInfo: proporciona métodos de instancia para crear, mover y enumerar directorios y subdirectorios.DirectoryInfo - provides instance methods for creating, moving, and enumerating through directories and subdirectories.

  • Path: proporciona métodos y propiedades para procesar cadenas de directorio entre plataformas.Path - provides methods and properties for processing directory strings in a cross-platform manner.

Además de usar estas clases, los usuarios de Visual Basic pueden usar los métodos y propiedades proporcionados por la clase Microsoft.VisualBasic.FileIO.FileSystem para la E/S de archivos.In addition to using these classes, Visual Basic users can use the methods and properties provided by the Microsoft.VisualBasic.FileIO.FileSystem class for file I/O.

Vea How to: Copy Directories(Cómo: Copiar directorios), Cómo: Crear una lista de directorios y How to: Enumerate Directories and Files (Cómo: Enumerar directorios y archivos).See How to: Copy Directories, How to: Create a Directory Listing, and How to: Enumerate Directories and Files.

SecuenciasStreams

La clase base abstracta Stream es compatible con bytes de lectura y escritura.The abstract base class Stream supports reading and writing bytes. Todas las clases que representan secuencias heredan de la clase Stream.All classes that represent streams inherit from the Stream class. La clase Stream y sus clases derivadas proporcionan una visión genérica de los repositorios y los orígenes de datos, y evitan que el programador tenga que ocuparse de los detalles específicos del sistema operativo y los dispositivos subyacentes.The Stream class and its derived classes provide a common view of data sources and repositories, and isolate the programmer from the specific details of the operating system and underlying devices.

Las secuencias comprenden tres operaciones fundamentales:Streams involve three fundamental operations:

  • Lectura: transferencia de datos desde una secuencia a una estructura de datos como, por ejemplo, una matriz de bytes.Reading - transferring data from a stream into a data structure, such as an array of bytes.

  • Escritura: transferencia de datos a una secuencia desde un origen de datos.Writing - transferring data to a stream from a data source.

  • Búsqueda: consulta y modificación de la posición actual en una secuencia.Seeking - querying and modifying the current position within a stream.

Dependiendo del repositorio o el origen de datos subyacente, una secuencia puede admitir solo algunas de estas características.Depending on the underlying data source or repository, a stream might support only some of these capabilities. Por ejemplo, la clase PipeStream no admite operaciones de búsqueda.For example, the PipeStream class does not support seeking. Las propiedades CanRead, CanWrite y CanSeek de una secuencia especifican las operaciones que admite.The CanRead, CanWrite, and CanSeek properties of a stream specify the operations that the stream supports.

Estas son algunas de las clases de secuencias de uso general:Here are some commonly used stream classes:

  • FileStream: para leer y escribir en un archivo.FileStream – for reading and writing to a file.

  • IsolatedStorageFileStream: para leer y escribir en un archivo en almacenamiento aislado.IsolatedStorageFileStream – for reading and writing to a file in isolated storage.

  • MemoryStream: para leer y escribir en la memoria como una memoria auxiliar.MemoryStream – for reading and writing to memory as the backing store.

  • BufferedStream: para mejorar el rendimiento de las operaciones de lectura y escritura.BufferedStream – for improving performance of read and write operations.

  • NetworkStream: para leer y escribir sobre los sockets de red.NetworkStream – for reading and writing over network sockets.

  • PipeStream: para leer y escribir sobre canalizaciones anónimas y con nombre.PipeStream – for reading and writing over anonymous and named pipes.

  • CryptoStream: para vincular secuencias de datos con transformaciones criptográficas.CryptoStream – for linking data streams to cryptographic transformations.

Para obtener un ejemplo de cómo trabajar con flujos de forma asincrónica, vea Asynchronous File I/O (E/S de archivos asincrónica).For an example of working with streams asynchronously, see Asynchronous File I/O.

Lectores y escritoresReaders and Writers

El espacio de nombres System.IO también proporciona tipos para leer los caracteres codificados de las secuencias y escribirlos en ellas.The System.IO namespace also provides types for reading encoded characters from streams and writing them to streams. Normalmente, las secuencias están diseñadas para la entrada y salida de bytes.Typically, streams are designed for byte input and output. Los tipos de lectura y escritura controlan la conversión de caracteres codificados en bytes y a la inversa, para que la secuencia pueda completar la operación.The reader and writer types handle the conversion of the encoded characters to and from bytes so the stream can complete the operation. Cada clase de lectura y escritura se asocia a una secuencia, que se puede recuperar mediante la propiedad BaseStream de la clase.Each reader and writer class is associated with a stream, which can be retrieved through the class's BaseStream property.

Estas son algunas clases de lectura y escritura de uso general:Here are some commonly used reader and writer classes:

  • BinaryReader y BinaryWriter: para leer y escribir tipos de datos primitivos como valores binarios.BinaryReader and BinaryWriter – for reading and writing primitive data types as binary values.

  • StreamReader y StreamWriter: para leer y escribir caracteres utilizando un valor de codificación para convertir los caracteres en bytes y a la inversa.StreamReader and StreamWriter – for reading and writing characters by using an encoding value to convert the characters to and from bytes.

  • StringReader y StringWriter: para leer y escribir caracteres en cadenas.StringReader and StringWriter – for reading and writing characters to and from strings.

  • TextReader y TextWriter: sirven como clases base abstractas para otros lectores y escritores que leen y escriben caracteres y cadenas, pero no datos binarios.TextReader and TextWriter – serve as the abstract base classes for other readers and writers that read and write characters and strings, but not binary data.

Vea How to: Read Text from a File (Cómo: Leer texto de un archivo), How to: Write Text to a File (Cómo: Escribir texto en un archivo), How to: Read Characters from a String (Cómo: Leer caracteres de una cadena) y How to: Write Characters to a String (Cómo: Escribir caracteres en una cadena).See How to: Read Text from a File, How to: Write Text to a File, How to: Read Characters from a String, and How to: Write Characters to a String.

Operaciones de E/S asincrónicasAsynchronous I/O Operations

Leer o escribir una gran cantidad de datos puede requerir muchos recursos.Reading or writing a large amount of data can be resource-intensive. Estas tareas se deben realizar de forma asincrónica si la aplicación necesita seguir respondiendo al usuario.You should perform these tasks asynchronously if your application needs to remain responsive to the user. Con las operaciones de E/S sincrónicas, el subproceso de la interfaz de usuario está bloqueado hasta que se completa la operación que usa gran cantidad de recursos.With synchronous I/O operations, the UI thread is blocked until the resource-intensive operation has completed. Use operaciones de E/S asincrónicas al desarrollar aplicaciones para la Tienda Windows 8.xWindows 8.x Store para evitar crear la impresión de que la aplicación ha dejado de responder.Use asynchronous I/O operations when developing Tienda Windows 8.xWindows 8.x Store apps to prevent creating the impression that your app has stopped working.

Los miembros asincrónicos contienen Async en sus nombres, como los métodos CopyToAsync, FlushAsync, ReadAsync y WriteAsync.The asynchronous members contain Async in their names, such as the CopyToAsync, FlushAsync, ReadAsync, and WriteAsync methods. Estos métodos se usan con las palabras clave async y await.You use these methods with the async and await keywords.

Para más información, consulte Asynchronous File I/O (E/S de archivos asincrónica).For more information, see Asynchronous File I/O.

CompresiónCompression

La compresión se refiere al proceso de reducir el tamaño de un archivo para su almacenamiento.Compression refers to the process of reducing the size of a file for storage. La descompresión es el proceso de extraer el contenido de un archivo comprimido para que esté en un formato utilizable.Decompression is the process of extracting the contents of a compressed file so they are in a usable format. El espacio de nombres System.IO.Compression contiene tipos para comprimir y descomprimir archivos y secuencias.The System.IO.Compression namespace contains types for compressing and decompressing files and streams.

Las clases siguientes se utilizan con frecuencia al comprimir y descomprimir archivos y secuencias:The following classes are frequently used when compressing and decompressing files and streams:

  • ZipArchive: para crear y recuperar entradas en el archivo zip.ZipArchive – for creating and retrieving entries in the zip archive.

  • ZipArchiveEntry: para representar un archivo comprimido.ZipArchiveEntry – for representing a compressed file.

  • ZipFile: para crear, extraer y abrir un paquete comprimido.ZipFile – for creating, extracting, and opening a compressed package.

  • ZipFileExtensions: para crear y extraer entradas en un paquete comprimido.ZipFileExtensions – for creating and extracting entries in a compressed package.

  • DeflateStream: para comprimir y descomprimir secuencias utilizando el algoritmo de deflación (Deflate).DeflateStream – for compressing and decompressing streams using the Deflate algorithm.

  • GZipStream: para comprimir y descomprimir secuencias con formato de datos gzip.GZipStream – for compressing and decompressing streams in gzip data format.

Vea How to: Compress and Extract Files (Cómo: Comprimir y extraer archivos).See How to: Compress and Extract Files.

Almacenamiento aisladoIsolated Storage

El almacenamiento aislado es un mecanismo de almacenamiento de datos que proporciona aislamiento y seguridad mediante la definición de modos estándar de asociar código a los datos guardados.Isolated storage is a data storage mechanism that provides isolation and safety by defining standardized ways of associating code with saved data. El almacenamiento proporciona un sistema de archivos virtual que está aislado para cada usuario, ensamblado y (opcionalmente) dominio.The storage provides a virtual file system that is isolated by user, assembly, and (optionally) domain. El almacenamiento aislado es especialmente útil cuando la aplicación no tiene permiso para obtener acceso a los archivos del usuario.Isolated storage is particularly useful when your application does not have permission to access user files. Se pueden guardar los valores o los archivos de la aplicación de una forma controlada por la directiva de seguridad del equipo.You can save settings or files for your application in a manner that is controlled by the computer's security policy.

El almacenamiento aislado no está disponible para aplicaciones de la Tienda Windows 8.xWindows 8.x Store, sino que deben usarse las clases de datos de aplicaciones del espacio de nombres Windows.Storage.Isolated storage is not available for Tienda Windows 8.xWindows 8.x Store apps; instead, use application data classes in the Windows.Storage namespace. Para más información, consulte Almacenamiento de datos de aplicación en el Centro de desarrollo de Windows.For more information, see Application data in the Windows Dev Center.

Las clases siguientes se utilizan con frecuencia al implementar el almacenamiento aislado:The following classes are frequently used when implementing isolated storage:

Vea Almacenamiento aislado.See Isolated Storage.

Operaciones de E/S en aplicaciones de la Tienda WindowsI/O Operations in Windows Store apps

.NET para aplicaciones de la Tienda Windows 8.x.NET for Windows 8.x Store apps contiene muchos de los tipos necesarios para leer y escribir en secuencias; sin embargo, este conjunto no incluye todos los tipos de E/S de .NET Framework.The .NET para aplicaciones de la Tienda Windows 8.x.NET for Windows 8.x Store apps contains many of the types for reading from and writing to streams; however, this set does not include all the .NET Framework I/O types.

Estas son algunas diferencias importantes que se deben tener en cuenta al utilizar operaciones de E/S en las aplicaciones de la Tienda Windows 8.xWindows 8.x Store:Some important differences to note when using I/O operations in Tienda Windows 8.xWindows 8.x Store apps:

Si es necesario, puede convertir entre las secuencias de .NET Framework y las secuencias de Windows Runtime.You can convert between .NET Framework streams and Windows Runtime streams, if necessary. Para más información, vea Cómo: Convertir flujos de .NET Framework en flujos de Windows en tiempo de ejecución o System.IO.WindowsRuntimeStreamExtensions.For more information, see How to: Convert Between .NET Framework Streams and Windows Runtime Streams or System.IO.WindowsRuntimeStreamExtensions.

Para obtener más información sobre las operaciones de E/S en una aplicación de la Tienda Windows 8.xWindows 8.x Store, vea Inicio rápido: Leer y escribir archivos.For more information about I/O operations in a Tienda Windows 8.xWindows 8.x Store app, see Quickstart: Reading and writing files.

E/S y seguridadI/O and Security

Cuando se utilizan las clases del espacio de nombres System.IO, se deben seguir los requisitos de seguridad del sistema operativo como las listas de control de acceso (ACL) para controlar el acceso a los archivos y directorios.When you use the classes in the System.IO namespace, you must follow operating system security requirements such as access control lists (ACLs) to control access to files and directories. Este requisito es adicional a cualquier requisito FileIOPermission.This requirement is in addition to any FileIOPermission requirements. Se pueden administrar las listas de control de acceso mediante programación.You can manage ACLs programmatically. Para más información, consulte How to: Add or Remove Access Control List Entries (Cómo: Agregar o quitar entradas de la lista de control de acceso).For more information, see How to: Add or Remove Access Control List Entries.

Las políticas de seguridad predeterminadas impiden que las aplicaciones de intranet o Internet obtengan acceso a los archivos del equipo del usuario.Default security policies prevent Internet or intranet applications from accessing files on the user’s computer. Por lo tanto, no use las clases de E/S que requieren una ruta a un archivo físico al escribir el código que se descarga a través de Internet o una intranet.Therefore, do not use the I/O classes that require a path to a physical file when writing code that will be downloaded over the Internet or intranet. Use en su lugar almacenamiento aislado para las aplicaciones tradicionales de .NET Framework, o datos de aplicaciones para las aplicaciones de la Tienda Windows 8.xWindows 8.x Store.Instead, use isolated storage for traditional .NET Framework applications, or use application data for Tienda Windows 8.xWindows 8.x Store apps.

Solo se realiza una comprobación de seguridad cuando se construye la secuencia.A security check is performed only when the stream is constructed. Por consiguiente, no abra una secuencia y se la pase al código o a los dominios de aplicación de menos confianza.Therefore, do not open a stream and then pass it to less-trusted code or application domains.

Proporciona una lista de tareas de E/S asociadas a los archivos, directorios y secuencias, y vínculos al contenido y los ejemplos pertinentes para cada tarea.Provides a list of I/O tasks associated with files, directories, and streams, and links to relevant content and examples for each task.

Describe las ventajas de rendimiento y el funcionamiento básico de la E/S asincrónica.Describes the performance advantages and basic operation of asynchronous I/O.

Describe un mecanismo de almacenamiento de datos que proporciona aislamiento y seguridad mediante la definición de las formas estándar de asociar código a los datos guardados.Describes a data storage mechanism that provides isolation and safety by defining standardized ways of associating code with saved data.

  • Pipes (Operaciones de canalización de .NET Framework)Pipes

Describe las operaciones anónimas y de canalización con nombre de .NET Framework.Describes anonymous and named pipe operations in the .NET Framework.

Describe los archivos asignados a memoria, que incluyen el contenido de archivos en disco en memoria virtual.Describes memory-mapped files, which contain the contents of files on disk in virtual memory. Puede usar archivos asignados a memoria para editar archivos muy grandes y crear memoria compartida para la comunicación entre procesos.You can use memory-mapped files to edit very large files and to create shared memory for interprocess communication.