Formação .NET Carreiras Cursos Eventos Blog

Clique em qualquer espaço vazio ou Esc para fechar

Entrar
Ver Planos
Ver Planos Entrar
Página Principal
Formação .NET
Carreiras
Todos os Cursos
Agenda
Blog
Início
Blog
Manipulação de arquivos no C#
Backend
Manipulação de arquivos no C#
06/01/2022
André Baltieri

Neste artigo vamos conferir como podemos criar, copiar, substituir, ler e escrever arquivos em C# de uma forma simples e direta!

System.File

O .NET é um conjunto de bibliotecas (Framework) que nos auxilia na criação de aplicações, e como você deve imaginar, manipular arquivos é algo comum em boa parte dos sistemas.

Desta forma, o .NET traz o System.File, uma lib completa para manipulação de arquivos em qualquer plataforma que suporte o .NET.

IMPORTANTE: Existem alguns métodos como o File.Encrypt que roda exclusivamente no Windows. Neste caso você será alertado pelo compilador e/ou IDE sempre que utilizar algum método específico de uma plataforma.

Para facilitar todos os exemplos a seguir, vamos começar criando uma constante que define o caminho do nosso arquivo. Como estou no Windows neste momento, vou usar o seguinte caminho:

const string filePath = @"C:\dev\meuarquivo.txt";

Tratamento de erros

Outro ponto importante é que a manipulação de arquivos é sensível, então recomenda-se que sempre utiliza-as dentro de um escopo try/catch, conforme abaixo:

try {
    // Manipulação de arquivo
} catch (Exception ex) {
    // Capturar exceção
}

Criar um arquivo

O primeiro método que vamos aprender é o File.Create que cria ou sobrescreve um arquivo no disco. Caso o arquivo não exista, o mesmo será criado, se já existir, será sobrescrito.

É importante salientar que o caminho (Pastas) deve existir, caso contrário, você receberá um DirectoryNotFoundException. Ele não cria a pasta automaticamente. Em adicional, caso não haja permissão para escrita do arquivo no diretório informado, você receberá a exceção UnauthorizedAccessException.

File.Create(filePath);

Adicionar conteúdo a um arquivo

Para adicionar conteúdo (Escrever) em um arquivo, podemos usar o AppendText ou CreateText. A diferença é que o AppendText adiciona um texto ao fim do arquivo, enquanto o CreateText sobrescreve o conteúdo do arquivo com um texto informado.

using var file = File.AppendText(filePath);
file.WriteLine("Teste"); // Adiciona o texto ao fim do arquivo
file.Close();

using var file = File.CreateText(filePath);
file.WriteLine("Teste 2"); // Substitui o conteúdo do arquivo com este texto
file.Close();

É importante notar que ao manipular arquivos grandes, você não precisa ler o arquivo completamente para adicionar conteúdo ao mesmo. Neste caso é preferível utilizar o AppendText.

// ERRADO 
var data = File.ReadText(filePath);
data += "Meu texto adicional";
using var file = File.CreateText(filePath);
file.WriteLine(data); // Substitui o conteúdo do arquivo com este texto
file.Close();

// CORRETO
using var file = File.AppendText(filePath);
file.WriteLine("Meu texto adicional"); // Adiciona o texto ao fim do arquivo
file.Close();

IMPORTANTE: Em caso de arquivos grandes, é recomendado utilizar o StreamWriter para escrita e StreamReader para leitura.

Copiar um arquivo

Para copiar um arquivo podemos usar o File.Copy, informando o caminho completo do arquivo atual e seu destino.

File.Copy(filePath, @"C:\dev\outro.txt");

É importante notar que neste caso, se houver outro arquivo com mesmo nome, você receberá uma execeção. Para sobrescrever o arquivo de origem caso haja, utilize o parâmetro adicional para overwrite no método Copy.

File.Copy(filePath, @"C:\dev\outro.txt", true); // Vai sobrescrever se precisar

Mover um arquivo

Da mesma forma, podemos utilizar o File.Move para mover um arquivo de um diretório para outro, considerando os mesmos pontos do método anterior.

File.Move(filePath, @"C:\dev\temp\novo.txt", overwrite: true);

Substituir um arquivo

Para finalizar, podemos utilizar o File.Replace para substituir um arquivo, também considerando os mesmos pontos dos métodos anteriores.

File.Replace(@"C:\dev\outro.txt", filePath, @"C:\dev\backup.txt");

Excluir um arquivo

Caso queira excluir um arquivo, podemos utilizar o método File.Delete informando o caminho completo do mesmo. Caso o arquivo não seja encontrado ou não possa ser excluído, receberemos uma exceção.

File.Delete(filePath);

Verificar se um arquivo existe

Para verificar se um arquivo existe, podemos utilizar o File.Exists informando o caminho completo do arquivo. Este método nos retorna true ou false para dizer se o arquivo existe ou não.

File.Exists(filePath); // Retorna um booleano

Abertura e leitura de arquivos

Para saber mais sobre a abertura e leitura de arquivos, consulte nosso post anterior sobre Como ler arquivos em C#.

Obter data de última modificação do arquivo

Outro método que já precisei utilizar e foi bem útil chama-se File.GetLastAccessTime que retorna a data/hora do último acesso a um arquivo.

var time = File.GetLastAccessTime(filePath); // DateTime
Console.WriteLine(time);

Obter atributos do arquivo

Para demais atributos do arquivo, podemos utilizar o File.GetAttributes que retorna um enumerador.

var attrs =  File.GetAttributes(filePath);
if ((attrs & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
    Console.WriteLine("read-only");

if ((attrs & FileAttributes.Compressed) == FileAttributes.Compressed)
    Console.WriteLine("compressed");

Conclusão

O System.File tem um enorme leque de opções para manipulação de arquivos, e seu uso é simples e direto. Devemos nos atentar apenas ao tratamento de erros pela sensibilidade na leitura/escrita de arquivos.

Conheça o autor

André Baltieri

Microsoft MVP

Me dedico ao desenvolvimento de software desde 2003, sendo minha maior especialidade o Desenvolvimento Web. Durante esta jornada pude trabalhar presencialmente aqui no Brasil e Estados Unidos, atender remotamente times da ?ndia, Inglaterra e Holanda, receber 8x Microsoft MVP e realizar diversas consultorias em empresas e projetos de todos os tamanhos.

Mais popular

1

Blazor Render Modes

Frontend

2

Blazor - Rotas e Navegação

Frontend

3

Uma visão geral do Blazor

Frontend

Assine nossa Newsletter

Inscreva-se em nossa newsletter e seja o primeiro a receber atualizações sobre novos cursos, dicas de carreira, e conteúdos exclusivos em programação. Junte-se à nossa comunidade de aprendizado e impulsione sua trajetória profissional! Não perca essa oportunidade. Inscreva-se agora e comece a transformar seu futuro!

Alves & Baltieri Informática LTDA ME 21.108.579/0001-80
Sobre Como funciona Seja premium Blog
Conteúdo Formação .NET Carreiras Cursos Eventos
Suporte Termos de uso Política de privacidade Política de cancelamento Contato
Redes Sociais Youtube Discord LinkedIn Instagram Facebook

© balta.io 2013 - 2025 | Todos os direitos reservados

An unhandled error has occurred. Reload 🗙