IRONSOFTWAREHOME
ATUALIZAÇÕES DO DESENVOLVEDOR

FileStream em C# (Como funciona para desenvolvedores)

Curtis Chau
Curtis Chau
Updated: 23 de abril de 2026

Este artigo abordará a classe FileStream em C# e como ela auxilia na execução de operações de leitura e gravação em arquivos. Vamos explorar exemplos práticos, entender como o FileStream funciona em sua essência e aprender como gerenciar dados de arquivos de forma eficiente. Este guia destina-se a quem está começando a trabalhar com arquivos em C#, portanto, a linguagem será mantida amigável para iniciantes, ao mesmo tempo que fornece instruções detalhadas sobre como trabalhar com arquivos em C# e uma introdução à biblioteca IronPDF .

O que é FileStream?

A classe FileStream em C# fornece uma maneira de manipular arquivos usando bytes. Ele funciona com operações de leitura e gravação em arquivos, permitindo que você interaja diretamente com o conteúdo dos arquivos. Isso é particularmente útil ao trabalhar com arquivos para tarefas de entrada/saída, especialmente ao manipular matrizes de bytes.

Casos de uso do FileStream

O FileStream é ideal para:

  • Leitura e gravação de dados binários diretamente de ou para arquivos.
  • Gerenciamento eficiente de arquivos grandes.
  • Executar operações assíncronas com arquivos.
  • Gerenciar os recursos do sistema utilizando a memória de forma eficiente.

Exemplo básico

Aqui está um exemplo simples de como abrir um arquivo, gravar dados e depois lê-los 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 exemplo demonstra a criação de um objeto FileStream para lidar com operações de leitura e gravação de arquivos. A classe FileStream lê e grava bytes diretamente, tornando-a adequada para lidar com arquivos grandes ou dados binários. Usamos Encoding para converter entre texto e bytes.

Gravação de dados com FileStream

Para gravar dados em um arquivo, você usará o método Write. Aqui está um exemplo que explica como funciona com mais detalhes:

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);
        }
    }
}

Neste código, convertemos uma string em um array de bytes usando a codificação UTF-8. O método Write escreve a matriz de bytes no arquivo, começando da posição atual (determinada pelo deslocamento) e escrevendo o número especificado de bytes.

  • FileMode.Create cria um novo arquivo, sobrescrevendo qualquer arquivo existente com o mesmo nome.
  • FileAccess.Write concede permissões de gravação ao FileStream.

Leitura de dados com FileStream

Agora, vamos explorar como ler dados de um arquivo 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);
        }
    }
}

Neste exemplo:

  • FileMode.Open abre um arquivo existente.
  • O método Read lê um número específico de bytes (com base no tamanho do buffer) e os armazena no buffer de matriz de bytes.
  • Usamos Encoding.UTF8.GetString para converter os dados de byte de volta para uma string.

Gerenciando o acesso a arquivos com o FileStream

A classe FileStream controla o acesso aos arquivos, permitindo o ajuste preciso dos identificadores de arquivos e o gerenciamento de recursos do sistema. Ao usar FileStream, é vital garantir que o stream seja adequadamente descartado após o uso, chamando Close() manualmente ou usando a declaração using que descarta automaticamente o stream.

Manipulação da posição do arquivo

Sempre que você lê ou grava em um arquivo, o FileStream mantém o controle da posição atual dentro do arquivo. Você pode acessar essa posição usando a propriedade Position:

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

Utilizando FileStream para operações assíncronas

O FileStream pode ser usado para operações assíncronas de leitura e gravação, melhorando o desempenho ao permitir que outros processos sejam executados enquanto as operações de arquivo são realizadas. Eis um exemplo básico de leitura assí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);
        }
    }
}

O método ReadAsync lê os dados de forma assíncrona. Os parâmetros FileAccess.Read e FileMode.Open controlam como o arquivo é acessado.

Exemplo de tratamento de exceções

Ao trabalhar com FileStream , o tratamento de exceções é essencial para evitar erros de tempo de execução e gerenciar adequadamente os recursos do sistema. Aqui está um padrão para lidar com exceções ao ler ou gravar arquivos:

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}");
        }
    }
}

Buffer e desempenho

A classe FileStream inclui um mecanismo de buffer que permite um desempenho mais rápido, especialmente ao trabalhar com arquivos grandes. Ao utilizar um buffer, os dados são armazenados temporariamente na memória, reduzindo a necessidade de acesso constante ao 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);
        }
    }
}

Aqui, FileOptions.WriteThrough garante que os dados são escritos diretamente no arquivo, ignorando o buffer adicional. No entanto, você pode controlar o tamanho do buffer para otimizar o desempenho.

Apresentando o IronPDF

FileStream C# (Como Funciona para Desenvolvedores): Figura 1 - IronPDF: A Biblioteca de PDF C#

IronPDF é uma biblioteca C# robusta para PDF, utilizada para criar, editar e manipular documentos PDF em aplicações .NET . Os desenvolvedores podem gerar PDFs a partir de várias entradas, como HTML , imagens e até mesmo texto bruto, usando o IronPDF. Com recursos como marca d'água, mesclagem, divisão e proteção por senha, o IronPDF é ideal para aplicações web e desktop, oferecendo controle preciso sobre a saída em PDF.

IronPDF com FileStream

Aqui está um exemplo de como gerar um PDF usando o IronPDF e salvá-lo em um FileStream . Isso demonstra como o IronPDF se integra perfeitamente ao FileStream , permitindo que os desenvolvedores controlem programaticamente a criação e o salvamento 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.");
    }
}

Conclusão

FileStream C# (Como Funciona para Desenvolvedores): Figura 2 - Página de Licenciamento do IronPDF

A classe FileStream em C# oferece funcionalidades poderosas para gerenciar entrada e saída de arquivos. Permite aos desenvolvedores ler e gravar dados de forma eficiente, controlar a posição atual dentro de um arquivo e trabalhar de forma assíncrona, compreendendo como arrays de bytes, caminhos de arquivos e manipulação de fluxos funcionam em conjunto. A utilização do FileStream em conjunto com o IronPDF oferece aos desenvolvedores a flexibilidade necessária para lidar com PDFs de forma eficiente em aplicações .NET . Seja para gerar relatórios, salvar arquivos ou lidar com conteúdo dinâmico, essa combinação oferece controle preciso sobre a criação e o armazenamento de documentos PDF.

O IronPDF oferece uma avaliação gratuita e uma taxa de licenciamento $999, tornando-se uma solução competitiva para necessidades profissionais de geração de PDF.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.