E/S de archivos básica

La clase base abstracta Stream es compatible con bytes de lectura y escritura. Stream tiene compatibilidad asincrónica. Sus implementaciones predeterminadas definen lecturas y escrituras sincrónicas según sus correspondientes métodos asincrónicos, y viceversa.

Todas las clases que representan secuencias se derivan de la clase Stream. La clase Stream y sus clases derivadas proporcionan una visión genérica de los orígenes de datos y los repositorios, aislando al programador de los detalles específicos del sistema operativo y sus dispositivos subyacentes.

Las secuencias comprenden estas operaciones fundamentales:

  • En las secuencias se puede leer. La lectura es la transferencia de datos desde una secuencia a una estructura de datos, como, por ejemplo, una matriz de bytes.

  • En las secuencias se puede escribir. La escritura consiste en la transferencia de información desde un origen de datos a una secuencia.

  • Las secuencias pueden admitir operaciones de búsqueda. Las operaciones de búsqueda consisten en la consulta y modificación de la posición actual en una secuencia.

Según el origen de datos o repositorio subyacente, las secuencias pueden admitir sólo algunas de estas características. Por ejemplo, NetworkStreams no admite operaciones de búsqueda. Las propiedades CanRead, CanWrite, y CanSeek de Stream y sus clases derivadas determinan las operaciones que son compatibles con diferentes secuencias.

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

NotaNota

Los usuarios de Visual Basic pueden optar por usar las propiedades y los métodos proporcionados por la clase Microsoft.VisualBasic.FileIO.FileSystem para la entrada y salida de archivos.

Clases usadas para E/S de archivos

Directory proporciona métodos estáticos para crear, mover y enumerar archivos en directorios y subdirectorios. La clase DirectoryInfo proporciona métodos de instancia.

DirectoryInfo proporciona métodos de instancia para crear, mover y enumerar archivos en directorios y subdirectorios. La clase Directory proporciona métodos estáticos.

DriveInfo proporciona los métodos de instancia para tener acceso a información sobre una unidad.

File proporciona métodos estáticos para crear, copiar, eliminar, mover y abrir archivos y contribuye a la creación de FileStream. La clase FileInfo proporciona métodos de instancia.

FileInfo proporciona métodos de instancia para crear, copiar, eliminar, mover y abrir archivos y contribuye a la creación de FileStream. La clase File proporciona métodos estáticos.

FileStream admite el acceso aleatorio a los archivos a través de su método Seek. FileStream abre los archivos de forma sincrónica de manera predeterminada, pero también admite operaciones asincrónicas. File contiene métodos estáticos, mientras que FileInfo contiene métodos de instancia.

FileSystemInfo es la clase base abstracta de FileInfo y DirectoryInfo.

Path proporciona métodos y propiedades para procesar cadenas de directorio entre plataformas.

DeflateStream proporciona métodos y propiedades para comprimir y descomprimir secuencias utilizando el algoritmo Deflate.

GZipStream proporciona métodos y propiedades para comprimir y descomprimir secuencias. De forma predeterminada, esta clase utiliza el mismo algoritmo que la clase DeflateStream, pero se puede extender para utilizar otros formatos de compresión.

SerialPort proporciona métodos y propiedades para controlar un recurso de archivo de puerto serie.

File, FileInfo, DriveInfo, Path, Directory y DirectoryInfo son clases selladas (en Microsoft Visual Basic, NotInheritable). Se pueden crear nuevas instancias de estas clases, pero no pueden tener clases derivadas.

Clases usadas para leer y escribir en secuencias

BinaryReader y BinaryWriter leen y escriben cadenas codificadas y tipos de datos primitivos en las clases Stream.

StreamReader lee los caracteres de las clases Stream, y utiliza la clase Encoding para convertir los caracteres en bytes, y viceversa. StreamReader tiene un constructor que trata de comprobar cuál es la codificación (Encoding ) correcta para una secuencia (Stream) dada, basándose en la presencia de un preámbulo específico de Encoding, por ejemplo una marca de orden de bytes.

StreamWriter escribe caracteres en Streams, y utiliza Encoding para convertir los caracteres en bytes.

StringReader lee los caracteres de Strings. StringReader permite tratar cadenas (Strings) con la misma API, de manera que su resultado puede ser una secuencia (Stream) en cualquier codificación o una cadena (String).

StringWriter escribe caracteres en Strings. StringWriter permite tratar cadenas (Strings) con la misma API, de manera que su resultado puede ser una secuencia (Stream) en cualquier codificación o una cadena (String).

TextReader es la clase abstracta de StreamReader y StringReader. Mientras que las implementaciones de la clase abstracta Stream están diseñadas para la entrada y salida de bytes, las de TextReader están diseñadas para la entrada de caracteres Unicode.

TextWriter es la clase abstracta de StreamWriter y StringWriter. Mientras que las implementaciones de la clase abstracta Stream están diseñadas para la entrada y salida de bytes, las de TextWriter están diseñadas para la salida de caracteres Unicode.

Clases comunes de secuencias de E/S

BufferedStream es un objeto Stream que agrega almacenamiento en búfer a otro objeto Stream, como NetworkStream. (FileStream ya tiene almacenamiento en búfer internamente, y MemoryStream no necesita almacenamiento en búfer.) BufferedStream se puede componer en torno a ciertos tipos de secuencias para mejorar el rendimiento de lectura y escritura. Un búfer es un bloque de bytes de la memoria utilizado para almacenar datos en la memoria caché y, de este modo, reducir el número de llamadas al sistema operativo.

CryptoStream vincula flujos de datos con transformaciones criptográficas. Aunque CryptoStream deriva de Stream, no forma parte del espacio de nombres System.IO, sino del espacio de nombres System.Security.Cryptography.

MemoryStream es una secuencia no almacenada en búfer a cuyos datos encapsulados se puede obtener acceso directamente en la memoria. Esta secuencia no tiene almacén de respaldo y puede resultar útil como búfer temporal.

NetworkStream representa un objeto Stream a través de una conexión de red. Aunque NetworkStream deriva de Stream, no forma parte del espacio de nombres System.IO, sino del espacio de nombres System.Net.Sockets.

E/S y seguridad

Cuando se utilizan las clases del espacio de nombres System.IO se deben satisfacer requisitos de seguridad del sistema operativo como las listas de control de acceso (ACL) para que se permita el acceso. Este requisito es adicional a cualquier requisito FileIOPermission.

NotaNota

Se pueden administrar listas de control de acceso (ACL) mediante programación.Para obtener más información, vea Cómo: Agregar o quitar entradas de la lista de control de acceso y Información general sobre la tecnología ACL.

Nota de precauciónPrecaución

La directiva de seguridad predeterminada de Internet y de una intranet no permite el acceso a archivos.Por ello, no use las clases de E/S de almacenamiento no aislado normales al escribir código que se vaya a descargar a través de Internet.En su lugar, utilice Almacenamiento aislado.

Nota de precauciónPrecaución

Al abrir un archivo o una secuencia de red, sólo se realiza una comprobación de seguridad cuando se construye la secuencia.Por lo tanto, se debe tener cuidado al entregar estas secuencias a dominios de aplicaciones o código que no sean de confianza.

Vea también

Tareas

Cómo: Crear una lista de directorios

Cómo: Leer y escribir en un archivo de datos recién creado

Cómo: Abrir y anexar a un archivo de registro

Cómo: Leer texto de un archivo

Cómo: Escribir texto en un archivo

Cómo: Leer caracteres de una cadena

Cómo: Escribir caracteres en una cadena

Conceptos

Tareas de E/S comunes