IRONSOFTWAREHOME
ACTUALIZACIONES PARA DESARROLLADORES

FileStream C# (Cómo Funciona para Desarrolladores)

Jacob Mellor, Director de Tecnología @ Team Iron
Jacob Mellor
Updated: 23 de abril de 2026

Este artículo se centrará en la clase FileStream en C# y cómo te ayuda a realizar operaciones de lectura y escritura en archivos. Exploraremos ejemplos prácticos, entenderemos cómo funciona FileStream en su núcleo, y aprenderemos cómo gestionar datos de archivos de manera eficiente. Esta guía está dirigida a aquellos que son nuevos en el manejo de archivos en C#, por lo que el lenguaje se mantendrá accesible para principiantes al tiempo que proporciona instrucciones detalladas sobre cómo trabajar con archivos en C# y una introducción a la biblioteca IronPDF también.

¿Qué es FileStream?

La clase FileStream en C# proporciona una forma de manejar archivos usando bytes. Funciona con operaciones de lectura y escritura en archivos, permitiéndote interactuar directamente con el contenido de los archivos. Esto es particularmente útil al trabajar con archivos para tareas de entrada/salida, especialmente al manipular matrices de bytes.

Casos de uso de FileStream

FileStream es ideal para:

  • Leer y escribir datos binarios directamente desde o hacia archivos.
  • Manejar archivos grandes de manera eficiente.
  • Realizar operaciones de archivos asincrónicas.
  • Gestionar recursos del sistema utilizando eficientemente la memoria.

Ejemplo básico

Aquí hay un ejemplo simple para abrir un archivo, escribir datos y luego leerlos usando FileStream:

using System;
using System.IO;

public class Example
{
    public static void Main()
    {
        string path = "example.txt";
        
        // Creating a FileStream object to handle the file. The file handle is acquired here.
        using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write))
        {
            byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello, FileStream!");
            // Write data to file
            fileStream.Write(data, 0, data.Length);
        }
        
        // Read from the file
        using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read))
        {
            byte[] buffer = new byte[1024];
            int bytesRead = fileStream.Read(buffer, 0, buffer.Length);
            string text = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);
            Console.WriteLine(text);
        }
    }
}

Este ejemplo demuestra cómo crear un objeto FileStream para manejar operaciones de lectura y escritura de archivos. La clase FileStream lee y escribe bytes directamente, haciéndola adecuada para manejar archivos grandes o datos binarios. Utilizamos Encoding para convertir entre texto y bytes.

Escribir datos con FileStream

Para escribir datos en un archivo, usarás el método Write. Aquí hay un ejemplo que explica cómo funciona con más detalle:

using System;
using System.IO;

public class FileWriteExample
{
    public static void Main()
    {
        string path = "output.txt";
        
        // Creating a FileStream object to write data to the file
        using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write))
        {
            byte[] buffer = System.Text.Encoding.UTF8.GetBytes("Writing data to FileStream.");
            int offset = 0;
            int count = buffer.Length;
            
            // Writing data to the file
            fileStream.Write(buffer, offset, count);
        }
    }
}

En este código, convertimos una cadena en una matriz de bytes utilizando la codificación UTF8. El método Write escribe la matriz de bytes en el archivo comenzando desde la posición actual (determinada por el desplazamiento) y escribiendo la cantidad especificada de bytes.

  • FileMode.Create crea un nuevo archivo, sobrescribiendo cualquier archivo existente con el mismo nombre.
  • FileAccess.Write otorga permisos de escritura al FileStream.

Lectura de datos con FileStream

Ahora, exploremos cómo leer datos de un archivo usando FileStream.

using System;
using System.IO;

public class FileReadExample
{
    public static void Main()
    {
        // File path
        string path = "output.txt";

        // File Stream Object
        using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read))
        {
            byte[] buffer = new byte[1024];
            int bytesRead = fileStream.Read(buffer, 0, buffer.Length);
            // Output Stream
            string output = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);
            Console.WriteLine(output);
        }
    }
}

En este ejemplo:

  • FileMode.Open abre un archivo existente.
  • El método Read lee una cantidad específica de bytes (basada en el tamaño del buffer) y los almacena en el buffer de matriz de bytes.
  • Utilizamos Encoding.UTF8.GetString para convertir los datos de bytes de nuevo a una cadena.

Gestión del acceso a archivos con FileStream

La clase FileStream controla el acceso a los archivos, permitiendo un manejo fino de los manejadores de archivos y la gestión de recursos del sistema. Al usar FileStream, es vital asegurarse de que el flujo se deseche correctamente después de usarlo, ya sea llamando a Close() manualmente o utilizando la instrucción using que automáticamente desecha el flujo.

Cómo manejar la posición de un archivo

Cada vez que lees o escribes en un archivo, FileStream lleva un registro de la posición actual dentro del archivo. Puedes acceder a esta posición usando la propiedad Position:

fileStream.Position = 0; // Move to the beginning of the file

Uso de FileStream para operaciones asíncronas

FileStream se puede usar para operaciones de lectura y escritura asíncronas, mejorando el rendimiento al permitir que otros procesos se ejecuten mientras se realizan las operaciones de archivo. Aquí hay un ejemplo básico de lectura asíncrona:

using System;
using System.IO;
using System.Threading.Tasks;

public class AsyncReadExample
{
    public static async Task Main()
    {
        // Specified Path
        string path = "output.txt";
        
        using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.None, 4096, true))
        {
            byte[] buffer = new byte[1024];
            int bytesRead = await fileStream.ReadAsync(buffer, 0, buffer.Length);
            string result = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);
            Console.WriteLine(result);
        }
    }
}

El método ReadAsync lee los datos de manera asincrónica. Los parámetros FileAccess.Read y FileMode.Open controlan cómo se accede al archivo.

Ejemplo de manejo de excepciones

Al trabajar con FileStream, manejar excepciones es esencial para evitar errores de ejecución y gestionar correctamente los recursos del sistema. Aquí hay un patrón para manejar excepciones al leer o escribir en archivos:

using System;
using System.IO;

public class ExceptionHandlingExample
{
    public static void Main()
    {
        string path = "nonexistentfile.txt";
        
        try
        {
            using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read))
            {
                byte[] buffer = new byte[1024];
                int bytesRead = fileStream.Read(buffer, 0, buffer.Length);
                Console.WriteLine("Bytes Read: " + bytesRead);
            }
        }
        catch (FileNotFoundException e)
        {
            Console.WriteLine($"Exception: {e.Message}");
        }
    }
}

Buffering y rendimiento

La clase FileStream incluye un mecanismo de almacenamiento intermedio que permite un rendimiento más rápido, especialmente al trabajar con archivos grandes. Usando un buffer, los datos se almacenan temporalmente en la memoria, reduciendo la necesidad de acceso constante al disco.

using System;
using System.IO;

public class BufferingExample
{
    public static void Main()
    {
        string path = "bufferedfile.txt";
        byte[] data = System.Text.Encoding.UTF8.GetBytes("Buffered FileStream example.");
        
        using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None, 4096, FileOptions.WriteThrough))
        {
            fileStream.Write(data, 0, data.Length);
        }
    }
}

Aquí, FileOptions.WriteThrough asegura que los datos se escriban directamente en el archivo, omitiendo el almacenamiento en búfer adicional. Sin embargo, puedes controlar el tamaño del buffer para ajustar el rendimiento.

Presentando IronPDF

FileStream C# (Cómo Funciona Para Desarrolladores): Figura 1 - IronPDF: La biblioteca C# para PDF

IronPDF es una robusta biblioteca PDF en C# para crear, editar y manipular documentos PDF dentro de aplicaciones .NET. Los desarrolladores pueden generar PDFs desde varias entradas como HTML, imágenes, e incluso texto sin formato usando IronPDF. Con características como marcas de agua, combinación, división, y protección con contraseña, IronPDF es ideal para aplicaciones web y de escritorio con control preciso sobre la salida PDF.

IronPDF con FileStream

Aquí hay un ejemplo de generación de un PDF usando IronPDF y guardándolo en un FileStream. Esto demuestra cómo IronPDF se integra sin problemas con FileStream, permitiendo a los desarrolladores controlar programáticamente la creación y el guardado de PDFs.

using System;
using System.IO;
using IronPdf;

public class IronPDFExample
{
    public static void Main()
    {
        // Define the file path
        string path = "output.pdf";
        
        // Create an HTML string that we want to convert to PDF
        var htmlContent = "<h1>IronPDF Example</h1><p>This PDF was generated using IronPDF and saved with FileStream.</p>";
        
        // Initialize IronPDF's ChromePdfRenderer to render HTML as PDF
        var renderer = new ChromePdfRenderer();
        
        // Generate the PDF from the HTML string
        var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
        
        // Use FileStream to save the generated PDF
        using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write))
        {
            pdfDocument.SaveAs(fileStream);
        }
        
        Console.WriteLine("PDF created and saved successfully.");
    }
}

Conclusión

La clase FileStream en C# ofrece una funcionalidad poderosa para gestionar la entrada y salida de archivos. Permite a los desarrolladores leer y escribir datos de manera eficiente, controlar la posición actual dentro de un archivo, y trabajar de manera asíncrona al entender cómo funcionan juntos las matrices de bytes, las rutas de archivos y el manejo de flujos. Usar FileStream en combinación con IronPDF proporciona a los desarrolladores la flexibilidad para manejar PDFs de manera eficiente dentro de aplicaciones .NET. Ya sea que estés generando informes, guardando archivos o manejando contenido dinámico, esta combinación ofrece un control detallado sobre la creación y almacenamiento de documentos PDF.

IronPDF ofrece una prueba gratuita y una tasa de licencia $999, lo que la convierte en una solución competitiva para las necesidades profesionales de generación de PDF.

Jacob Mellor, Director de Tecnología @ Team Iron
Director de Tecnología

Jacob Mellor es Director de Tecnología de Iron Software y un ingeniero visionario pionero en la tecnología C# PDF. Como desarrollador original de la base de código principal de Iron Software, ha dado forma a la arquitectura de productos de la empresa desde su creación, transformándola, junto con el director ejecutivo Cameron Rimington, en una empresa de más de 50 personas que presta servicios a la NASA, Tesla y organismos gubernamentales de todo el mundo.

...
Leer más

Artículos Relacionados

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

OR
bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
Reserve su Demostración en Vivo gratuita
Booking Badge

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta
Biblioteca C# NuGet para PDF
Instalar con NuGet

Versión: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. En el Explorador de Soluciones, haga clic derecho en Referencias, Administrar Paquetes NuGet
  2. Seleccione Examinar y busque "IronPDF"
  3. Seleccione el paquete e instale
C# PDF DLL
Descargar DLL

Versión: 2026.9

o descargue el Instalador de Windows aquí.

  1. Descargue y descomprima IronPDF en una ubicación como ~/Libs dentro del directorio de su solución
  2. En el Explorador de Soluciones de Visual Studio, haga clic derecho en Referencias. Seleccione Examinar, "IronPDF.dll"

Licencias desde $999