Criar, mover, copiar ou excluir um arquivo utilizando o .NET pode ser tão fácil quanto escrever uma única linha de código. Veremos neste artigo, duas formas de fazer isso, utilizando as classes File e FileInfo em C# e VB.NET.

No exemplo das Listagens 1 e 2, é mostrado como criar, copiar, mover e excluir um arquivo utilizando a classe File.

Listagem 1: utilizando a classe File em C#

//Código em C#
File.Create(“C:\\arquivo.txt”);//Cria o arquivo “arquivo.txt” na unidade C:
File.Copy(“C:\\arquivo.txt”, “D:\\arquivo.txt”)//Copia o arquivo “arquivo.txt” da unidade C: para a D:
File.Move(“D:\\arquivo.txt”, “E:\\arquivo.txt”)//Move o arquivo “arquivo.txt” da unidade D: para a E:
File.Delete(“C:\arquivo.txt”)//Exclui o arquivo “arquivo.txt” da unidade C:. Agora deve restar apenas o da unidade E:

Listagem 2: utilizando a classe File em VB.NET

//Código em VB.NET
File.Create(“C:\\arquivo.txt”);//Cria o arquivo “arquivo.txt” na unidade C:
File.Copy(“C:\\arquivo.txt”, “D:\\arquivo.txt”)//Copia o arquivo “arquivo.txt” da unidade C: para a D:
File.Move(“D:\\arquivo.txt”, “E:\\arquivo.txt”)//Move o arquivo “arquivo.txt” da unidade D: para a E:
File.Delete(“C:\arquivo.txt”)//Exclui o arquivo “arquivo.txt” da unidade C:. Agora deve restar apenas o da unidade E:

Notem que os métodos da classe File utilizados são estáticos, ou seja, não precisamos criar uma instância da classe para usar suas funções.

Agora, vejamos uma forma alternativa de fazer o mesmo, dessa vez utilizando a classe FileInfo. Em termos de funcionalidade, não há diferença. O que vale considerar para decidir qual das duas formas usar é saber que outras ações serão executadas com os arquivos em questão. As duas classes possuem propriedades e métodos diferentes, mas em boa parte dos casos, são usadas da mesma forma. A classe FileInfo, porém, requer que seja criada uma instância para que os métodos sejam chamados. Vejamos a seguir como fazer isso:

Listagem 3: utilizando a classe FileInfo em C#

FileInfo fi = new FileInfo(“C:\\arquivo.txt”);
fi.Create();//Cria o arquivo “arquivo.txt” na unidade C:
fi.CopyTo(“D:\\arquivo.txt”);//Copia o arquivo “arquivo.txt” da unidade C: para a D:
fi.MoveTo(“E:\arquivo.txt”);//Move o arquivo “arquivo.txt” da unidade C: para a E:
fi.Delete(); // Exclui o arquivo “arquivo.txt” da unidade C:. Agora devem restar os arquivos nas unidades D: e E:

Listagem 4: utilizando a classe FileInfo em VB.NET

Dim fi As new FileInfo(“C:\\arquivo.txt”);
fi.Create();//Cria o arquivo “arquivo.txt” na unidade C:
fi.CopyTo(“D:\\arquivo.txt”);//Copia o arquivo “arquivo.txt” da unidade C: para a D:
fi.MoveTo(“E:\arquivo.txt”);//Move o arquivo “arquivo.txt” da unidade C: para a E:
fi.Delete(); // Exclui o arquivo “arquivo.txt” da unidade C:. Agora devem restar os arquivos nas unidades D: e E:

É importante observar que a instância da classe FileInfo mantém a referência a um arquivo. Diferente da classe file, onde referenciamos um arquivo qualquer para copiar, mover ou excluir, uma vez criado o objeto FileInfo, este será relativo sempre a um mesmo arquivo. Para que o exemplo das listagens 3 e 4 ficassem iguais ao das listagens 1 e 2, seria necessário excluir o arquivo da unidade D:. Para isso, precisaríamos criar outra instância do FileInfo, referenciando o arquivo “D:\arquivo.txt” e depois chamar o método Delete().

Uma última observação é válida com relação ao método Move da classe File e MoveTo da classe FileInfo. Nos exemplos, o arquivo foi movido para outro diretório, porém, caso movêssemos o arquivo para o mesmo diretório de origem, seria o mesmo que renomear este arquivo.

Bem, por enquanto é só. Foram dicas simples, mas que podem ser muito úteis no dia-a-dia, afinal, quem nunca precisou manipular arquivos externos a sua aplicação?

Surgindo dúvidas sobre o conteúdo abordado neste artigo, ponho-me à disposição para saná-las, basta entrar em contato.

Abraço a todos e até o próximo artigo.

Veja também o vídeo Trabalhando com arquivos em C#