Compartir por


E/S de archivos y secuencias

E/S de archivos y secuencias (entrada/salida) hace referencia a la transferencia de datos a o desde un medio de almacenamiento. En .NET, los System.IO espacios de nombres contienen tipos que permiten leer y escribir, tanto de forma sincrónica como asincrónica, en flujos de datos y archivos. Estos espacios de nombres también contienen tipos que realizan compresión y descompresión en archivos y tipos que permiten la comunicación a través de canalizaciones y puertos serie.

Un archivo es una colección ordenada y con nombre de bytes que tiene almacenamiento persistente. Al trabajar con archivos, se trabaja con rutas de acceso de directorio, almacenamiento en disco y nombres de archivo y directorio. En cambio, un flujo es una secuencia de bytes que puede usar para leer desde y escribir en un sistema de almacenamiento de respaldo, que puede ser uno de varios medios de almacenamiento (por ejemplo, discos o memoria). Al igual que hay varios almacenes de respaldo distintos de los discos, hay varios tipos de secuencias que no son secuencias de archivos, como la red, la memoria y las secuencias de canalización.

Archivos y directorios

Puede usar los tipos del System.IO espacio de nombres para interactuar con archivos y directorios. Por ejemplo, puede obtener y establecer propiedades para archivos y directorios, y recuperar colecciones de archivos y directorios en función de los criterios de búsqueda.

Para las convenciones de nomenclatura de rutas de acceso y las formas de expresar una ruta de acceso de archivo para sistemas Windows, incluida la sintaxis del dispositivo DOS compatible con .NET Core 1.1 y versiones posteriores y .NET Framework 4.6.2 y versiones posteriores, consulte Formatos de ruta de acceso de archivo en sistemas Windows.

Estas son algunas clases de archivos y directorios que se usan habitualmente:

  • File : proporciona métodos estáticos para crear, copiar, eliminar, mover y abrir archivos, y ayuda a crear un FileStream objeto.

  • FileInfo : proporciona métodos de instancia para crear, copiar, eliminar, mover y abrir archivos, y ayuda a crear un FileStream objeto.

  • Directory : proporciona métodos estáticos para crear, mover y enumerar a través de directorios y subdirectorios.

  • DirectoryInfo : proporciona métodos de instancia para crear, mover y enumerar a través de directorios y subdirectorios.

  • Path : proporciona métodos y propiedades para procesar cadenas de directorio de forma multiplataforma.

Siempre debe proporcionar un manejo sólido de excepciones al utilizar métodos del sistema de archivos. Para obtener más información, consulte Control de errores de E/S.

Además de usar estas clases, los usuarios de Visual Basic pueden utilizar los métodos y propiedades proporcionados por la clase Microsoft.VisualBasic.FileIO.FileSystem para la entrada/salida de archivos.

Vea Cómo: Copiar directorios, Cómo: Crear una lista de directorios y Cómo: Enumerar directorios y archivos.

Arroyos

La clase Stream base abstracta admite bytes de lectura y escritura. Todas las clases que representan secuencias heredan de la Stream clase . La Stream clase y sus clases derivadas proporcionan una vista común de los orígenes de datos y los repositorios, y aíslan al programador de los detalles específicos del sistema operativo y los dispositivos subyacentes.

Los flujos implican tres operaciones fundamentales.

  • Lectura: transferencia de datos desde una corriente a una estructura de datos, como un array de bytes.

  • Escritura: transferencia de datos a un flujo desde un origen de datos.

  • Buscar: consultar y modificar la posición actual dentro de un flujo.

Según el origen de datos o el repositorio subyacentes, una secuencia podría admitir solo algunas de estas funcionalidades. Por ejemplo, la PipeStream clase no admite la búsqueda. Las propiedades CanRead, CanWrite y CanSeek de una secuencia especifican las operaciones que admite la secuencia.

Estas son algunas clases de flujo usadas habitualmente:

  • FileStream : para leer y escribir en un archivo.

  • IsolatedStorageFileStream : para leer y escribir en un archivo en almacenamiento aislado.

  • MemoryStream: para leer y escribir en la memoria como una memoria auxiliar.

  • BufferedStream : para mejorar el rendimiento de las operaciones de lectura y escritura.

  • NetworkStream: para leer y escribir sobre los sockets de red.

  • PipeStream: para leer y escribir sobre canalizaciones anónimas y con nombre.

  • CryptoStream : para vincular flujos de datos a transformaciones criptográficas.

Para obtener un ejemplo de cómo trabajar con secuencias de forma asincrónica, consulte E/S de archivo asincrónica.

Lectores y escritores

El espacio de nombres System.IO también proporciona tipos para leer los caracteres codificados de las secuencias y escribirlos en ellas. Normalmente, los flujos están diseñados para la entrada y salida de bytes. Los tipos de lector y escritor controlan la conversión de bytes a caracteres codificados y viceversa, para que el flujo pueda completar la operación. Cada clase de lector y escritor está asociada a una secuencia, que se puede recuperar a través de la propiedad BaseStream de la clase.

Estas son algunas clases de lector y escritor más usadas:

  • BinaryReader y BinaryWriter : para leer y escribir tipos de datos primitivos como valores binarios.

  • StreamReader y StreamWriter : para leer y escribir caracteres mediante un valor de codificación para convertir los caracteres a y desde bytes.

  • StringReader y StringWriter: para leer y escribir caracteres en cadenas.

  • TextReader y TextWriter : sirven como clases base abstractas para otros lectores y escritores que leen y escriben caracteres y cadenas, pero no datos binarios.

Vea Cómo: Leer texto de un archivo, Cómo : Escribir texto en un archivo, Cómo: Leer caracteres de una cadena y Cómo: Escribir caracteres en una cadena.

Operaciones de E/S asincrónicas

La lectura o escritura de una gran cantidad de datos puede consumir muchos recursos. Debe realizar estas tareas de forma asincrónica si la aplicación debe seguir respondiendo al usuario. Con las operaciones de E/S sincrónicas, el subproceso de interfaz de usuario se bloquea hasta que se haya completado la operación de uso intensivo de recursos. Usa operaciones asincrónicas de E/S al desarrollar aplicaciones de la Tienda Windows 8.x para evitar crear la impresión de que la aplicación ha dejado de funcionar.

Los miembros asincrónicos contienen Async en sus nombres, como los métodos CopyToAsync, FlushAsync, ReadAsync y WriteAsync. Se utilizan estos métodos con las palabras clave async y await.

Para obtener más información, consulte E/S asincrónica de archivos.

Compresión

La compresión hace referencia al proceso de reducir el tamaño de un archivo para el almacenamiento. Descompresión es el proceso de extraer el contenido de un archivo comprimido para que estén en un formato utilizable. El System.IO.Compression espacio de nombres contiene tipos para comprimir y descomprimir archivos y secuencias.

Las siguientes clases se usan con frecuencia al comprimir y descomprimir archivos y secuencias:

  • ZipArchive : para crear y recuperar entradas en el archivo ZIP.

  • ZipArchiveEntry : para representar un archivo comprimido.

  • ZipFile : para crear, extraer y abrir un paquete comprimido.

  • ZipFileExtensions : para crear y extraer entradas en un paquete comprimido.

  • DeflateStream : para comprimir y descomprimir secuencias mediante el algoritmo Deflate.

  • GZipStream : para comprimir y descomprimir secuencias en formato de datos gzip.

Vea Cómo: Comprimir y extraer archivos.

Almacenamiento aislado

El almacenamiento aislado es un mecanismo de almacenamiento de datos que proporciona aislamiento y seguridad mediante la definición de formas estandarizadas de asociar código con datos guardados. El almacenamiento proporciona un sistema de archivos virtual aislado por el usuario, el ensamblado y (opcionalmente) el dominio. El almacenamiento aislado es especialmente útil cuando la aplicación no tiene permiso para acceder a los archivos de usuario. Puede guardar la configuración o los archivos de la aplicación de una manera controlada por la directiva de seguridad del equipo.

El almacenamiento aislado no está disponible para las aplicaciones de la Tienda Windows 8.x; en su lugar, use las clases de datos de aplicación en el espacio de nombres Windows.Storage. Para obtener más información, consulte Datos de la aplicación.

Las siguientes clases se usan con frecuencia al implementar el almacenamiento aislado:

Vea Almacenamiento aislado.

Operaciones de E/S en aplicaciones de la Tienda Windows

El conjunto de .NET para las aplicaciones de la Tienda Windows 8.x contiene muchos de los tipos necesarios para leer y escribir en secuencias. Sin embargo, dicho conjunto no incluye todos los tipos de E/S de .NET.

Algunas diferencias importantes que se deben tener en cuenta al usar operaciones de E/S en aplicaciones de la Tienda Windows 8.x:

Puede convertir entre secuencias de .NET Framework y flujos de Windows Runtime, si es necesario. Para obtener más información, consulte Cómo convertir entre flujos de .NET Framework y flujos de tiempo de ejecución de Windows o WindowsRuntimeStreamExtensions.

Para obtener más información sobre las operaciones de E/S en una aplicación de la Tienda Windows 8.x, consulta Inicio rápido: Lectura y escritura de archivos.

E/S y seguridad

Al usar las clases en el System.IO espacio de nombres, debe seguir los requisitos de seguridad del sistema operativo, como listas de control de acceso (ACL) para controlar el acceso a archivos y directorios. Este requisito se suma a cualquier requisito de FileIOPermission. Puede administrar las ACL mediante programación. Para obtener más información, vea Cómo: Agregar o quitar entradas de lista de control de acceso.

Las directivas de seguridad predeterminadas impiden que las aplicaciones de Internet o intranet accedan a archivos en el equipo del usuario. Por lo tanto, no use las clases de E/S que requieren una ruta de acceso a un archivo físico al escribir código que se descargará a través de Internet o intranet. En su lugar, use el almacenamiento aislado para las aplicaciones .NET.

Solo se realiza una comprobación de seguridad cuando se construye la secuencia. Por consiguiente, no abra una secuencia y se la pase al código o a los dominios de aplicación de menos confianza.

  • Tareas comunes de E/S
    Proporciona una lista de tareas de E/S asociadas a archivos, directorios y secuencias, y vínculos a contenido y ejemplos pertinentes para cada tarea.

  • E/S de archivos asincrónica
    Describe las ventajas de rendimiento y el funcionamiento básico de E/S asincrónica.

  • Almacenamiento aislado
    Describe un mecanismo de almacenamiento de datos que proporciona aislamiento y seguridad mediante la definición de formas estandarizadas de asociar código con datos guardados.

  • Tuberías
    Describe las operaciones anónimas y de canalización con nombre de .NET.

  • Archivos asignados a memoria
    Descripción de los archivos mapeados en memoria, que contienen el contenido de los archivos en el disco en la memoria virtual. Puede usar archivos asignados a memoria para editar archivos muy grandes y crear memoria compartida para la comunicación entre procesos.