✏️Leer y Escribir
💾 FileStream: Manejo de Archivos en .NET
Definición:
FileStreames una clase que proporciona una vista de secuencia para leer y escribir en archivos.Uso Común: Se utiliza para operaciones de entrada/salida en el sistema de archivos.
🧩 Uso Básico de FileStream
Crear un
FileStream: InstanciarFileStreampara crear, leer o escribir en un archivo.Leer y Escribir: Ofrece métodos
ReadAsyncyWriteAsyncpara trabajar con datos de forma asíncrona.
static async Task Main()
{
string path = "test.txt";
string textToWrite = "Ejemplo de texto a escribir en el archivo.";
// Escribir en el archivo de manera asincrónica
await WriteToFileAsync(path, textToWrite);
// Leer el archivo de manera asincrónica
string readText = await ReadFromFileAsync(path);
Console.WriteLine(readText);
}
static async Task WriteToFileAsync(string filePath, string text)
{
byte[] encodedText = Encoding.UTF8.GetBytes(text);
using (FileStream sourceStream = new FileStream(filePath,
FileMode.Create, FileAccess.Write, FileShare.None,
bufferSize: 4096, useAsync: true))
{
await sourceStream.WriteAsync(encodedText, 0, encodedText.Length);
};
}
static async Task<string> ReadFromFileAsync(string filePath)
{
using (FileStream sourceStream = new FileStream(filePath,
FileMode.Open, FileAccess.Read, FileShare.Read,
bufferSize: 4096, useAsync: true))
{
StringBuilder sb = new StringBuilder();
byte[] buffer = new byte[0x1000];
int numRead;
while ((numRead = await sourceStream.ReadAsync(buffer, 0, buffer.Length)) != 0)
{
string text = Encoding.UTF8.GetString(buffer, 0, numRead);
sb.Append(text);
}
return sb.ToString();
}
}
}El método WriteToFileAsync:
WriteToFileAsync:Convierte el texto a un arreglo de bytes usando la codificación UTF-8. Esto es necesario porque
FileStreamtrabaja con bytes.Crea un nuevo
FileStreamcon la ruta del archivo, indicando que vamos a crear el archivo y tener acceso de escritura.La opción
FileShare.Nonesignifica que mientras estemos escribiendo, ningún otro proceso podrá acceder al archivo.bufferSize: 4096define el tamaño del búfer. Un búfer es como un área de almacenamiento temporal para los datos que estamos leyendo o escribiendo.useAsync: trueindica que vamos a usar operaciones asincrónicas con este flujo de archivo.await sourceStream.WriteAsync(encodedText, 0, encodedText.Length)escribe el arreglo de bytes al archivo de manera asincrónica. Elawaites lo que permite que la operación se ejecute sin bloquear el hilo principal.
El método ReadFromFileAsync:
ReadFromFileAsync:Crea un nuevo
FileStreampara leer el archivo existente.Inicializa un objeto
StringBuilderpara acumular el texto que vamos a leer.Crea un búfer para leer los datos.
Usa un bucle
whilepara leer el archivo hasta que no haya más datos (numRead = 0).Dentro del bucle,
await sourceStream.ReadAsync(buffer, 0, buffer.Length)lee los datos de manera asincrónica en el búfer.Encoding.UTF8.GetString(buffer, 0, numRead)convierte los bytes leídos a una cadena de texto.sb.Append(text)agrega el texto leído alStringBuilder.Finalmente, retorna el texto completo como una cadena.
Última actualización