Entrada/Salida de archivos en C#: Lectura, escritura y gestión de streams
Un archivo es una colección de datos almacenados en disco con un nombre y ruta de directorio específicos. Cuando un archivo se abre para lectura o escritura, se convierte en un stream (flujo).
El stream es básicamente la secuencia de bytes que pasa por el camino de comunicación. Hay dos flujos principales: flujo de entrada (input stream) y flujo de salida (output stream). El flujo de entrada se usa para leer datos del archivo (operación de lectura) y el flujo de salida para escribir en el archivo (operación de escritura).
Clases de E/S en C#
El espacio de nombres System.IO tiene varias clases para operaciones con archivos: crear, eliminar, leer, escribir, cerrar, etc.
Clases no abstractas comúnmente usadas en System.IO:
| Nº | Clase E/S y descripción |
|---|---|
| 1 | BinaryReader: Lee datos primitivos de un stream binario. |
| 2 | BinaryWriter: Escribe datos primitivos en formato binario. |
| 3 | BufferedStream: Almacenamiento temporal para un stream de bytes. |
| 4 | Directory: Ayuda a manipular estructura de directorios. |
| 5 | DirectoryInfo: Operaciones en directorios. |
| 6 | DriveInfo: Información de unidades de disco. |
| 7 | File: Manipulación de archivos. |
| 8 | FileInfo: Operaciones en archivos. |
| 9 | FileStream: Lectura/escritura en cualquier ubicación de un archivo. |
| 10 | MemoryStream: Acceso aleatorio a datos en memoria. |
| 11 | Path: Operaciones en información de rutas. |
| 12 | StreamReader: Lectura de caracteres desde un stream de bytes. |
| 13 | StreamWriter: Escritura de caracteres en un stream. |
| 14 | StringReader: Lectura desde un buffer de cadena. |
| 15 | StringWriter: Escritura en un buffer de cadena. |
La clase FileStream
La clase FileStream en System.IO ayuda a leer, escribir y cerrar archivos. Deriva de la clase abstracta Stream.
Necesita crear un objeto FileStream para crear un archivo nuevo o abrir uno existente:
FileStream <nombre_objeto> = new FileStream(<nombre_archivo>, <FileMode>, <FileAccess>, <FileShare>);
Ejemplo:
FileStream F = new FileStream("sample.txt", FileMode.Open, FileAccess.Read, FileShare.Read);
Parámetros:
| Nº | Parámetro y descripción |
|---|---|
| 1 | FileMode: Define métodos para abrir archivos.
|
| 2 | FileAccess: Miembros: Read, ReadWrite, Write. |
| 3 | FileShare: Miembros:
|
Ejemplo: Uso de FileStream
using System;
using System.IO;
namespace AplicaciónArchivoIO {
class Program {
static void Main(string[] args) {
FileStream F = new FileStream("test.dat", FileMode.OpenOrCreate, FileAccess.ReadWrite);
for (int i = 1; i <= 20; i++) {
F.WriteByte((byte)i);
}
F.Position = 0;
for (int i = 0; i <= 20; i++) {
Console.Write(F.ReadByte() + " ");
}
F.Close();
Console.ReadKey();
}
}
}
Resultado:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -1
Operaciones avanzadas de archivos en C#
Para aprovechar el poder de las clases System.IO, necesita conocer las propiedades y métodos comúnmente usados.
| Nº | Tema y descripción |
|---|---|
| 1 | Lectura/escritura en archivos de texto: Involucra StreamReader y StreamWriter. |
| 2 | Lectura/escritura en archivos binarios: Involucra BinaryReader y BinaryWriter. |
| 3 | Manipulación del sistema de archivos Windows: Navegar y localizar archivos y directorios. |
Lenguaje C
- Titanio: propiedades clave, aplicaciones e usos industriales
- Castañuelas: Historia, Artesanía y Ejecución
- Historia, producción y futuro del pegamento: de adhesivos antiguos a innovaciones modernas
- Estaño: de la Edad del Bronce a la industria moderna — Usos, producción y futuro
- Limas de Taller: Tipos, Clasificación, Uso Correcto y Seguridad
- Dominando la entrada/salida en C: scanf() y printf() explicados
- Manejo de archivos en C: Dominando E/S con fopen, fprintf, fread y fseek
- Dominando E/S de archivos en C: Crear, abrir y gestionar archivos
- Entendiendo los Archivos de Cabecera en C: Tipos, Uso y Buenas Prácticas
- Entrada/Salida de Archivos en Python: Dominando Operaciones de Lectura, Escritura y Gestión
- Entrada/Salida de Archivos en Python: Domina las Operaciones I/O