Como manipular diretórios e cópia de arquivos em C#

Manipular diretórios e copiar arquivos é uma tarefa comum em muitas aplicações C#. A linguagem oferece uma rica API para interagir com o sistema de arquivos, permitindo que você crie, exclua e copie arquivos e pastas de forma eficiente. Neste post, vamos explorar como manipular diretórios e cópia de arquivos em C#.

Exemplo de código

using System;
using System.IO;
using System.Windows.Forms;

namespace ManipularDiretorios
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void buttonCopy_Click(object sender, EventArgs e)
        {
            CopyFile();
        }

        private void CopyFile()
        {
            string sourceFile = textBoxSource.Text;
            string destinationFile = textBoxDestination.Text;

            try
            {
                if (File.Exists(sourceFile))
                {
                    // Copia o arquivo para o destino
                    File.Copy(sourceFile, destinationFile, true); // O parâmetro 'true' sobrescreve se já existir
                    MessageBox.Show("Arquivo copiado com sucesso.");
                }
                else
                {
                    MessageBox.Show("Arquivo de origem não encontrado.");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Erro ao copiar arquivo: {ex.Message}");
            }
        }

        private void buttonCreateDirectory_Click(object sender, EventArgs e)
        {
            CreateDirectory();
        }

        private void CreateDirectory()
        {
            string directoryPath = textBoxDestination.Text;

            try
            {
                // Cria o diretório se não existir
                if (!Directory.Exists(directoryPath))
                {
                    Directory.CreateDirectory(directoryPath);
                    MessageBox.Show("Diretório criado com sucesso.");
                }
                else
                {
                    MessageBox.Show("O diretório já existe.");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Erro ao criar diretório: {ex.Message}");
            }
        }
    }
}

Explicação do código

  • buttonCopy_Click: Este método é chamado quando o botão de copiar é clicado. Ele chama o método CopyFile();

  • CopyFile: Este método verifica se o arquivo de origem existe e, se existir, realiza a cópia para o destino especificado. O método File.Copy é utilizado, e o parâmetro true permite que o arquivo de destino seja sobrescrito, caso já exista;

  • buttonCreateDirectory_Click: Este método é chamado quando o botão para criar um diretório é clicado. Ele chama o método CreateDirectory();

  • CreateDirectory: Este método verifica se o diretório especificado existe. Se não existir, ele é criado usando Directory.CreateDirectory. Caso contrário, uma mensagem informa que o diretório já existe.

Outro exemplo prático

O código abaixo mostra como criar diretórios e subdiretórios, recuperar o caminho deles (path) e copiar arquivos para esses locais. Também é mostrado como manipular o componente “OpenFileDialog”. Veja:

    //Bibliotecas necessárias
    using System.IO;
    using Microsoft.VisualBasic.FileIO;
	...  
    string dirCodigo = tbCodigo.Text; //nome do diretório principal

    //cria diretório principal em C:
    System.IO.Directory.CreateDirectory("C:\" + dirCodigo); 

    //pega o diretório principal
    DirectoryInfo dir = new DirectoryInfo("C:\" + dirCodigo);

    //cria os subdiretórios dentro do diretório principal
    DirectoryInfo sub1 = dir.CreateSubdirectory("subdir1");
    DirectoryInfo sub2 = dir.CreateSubdirectory("subdir2");
    DirectoryInfo sub3 = dir.CreateSubdirectory("subdir3");

    Cópia de arquivos para diretórios:
   
    //pega o nome do arquivo com o OpenFileDialog (ofd1)
    string nomeDoArquivo = System.IO.Path.GetFileName(ofd1.FileName); 

    //mostra o nome do arquivo no TextBox
    string arquivo = tbArquivo.Text; 
  
    //copia o arquivo para a pasta criada
    FileInfo fi = new FileInfo(arquivo); 
  
    //caminho e nome do arquivo a ser copiado
    fi.CopyTo("C:\\diretorio\\" + nomeDoArquivo); 

Também é possível copiar pastas e arquivos de um local para outro desta forma:

...
   string sourcePath = caminho_de_origem; //pasta(s) a ser(em) copiadas
   string destinationPath = caminho_de_destino; //onde será(ão) colada(s) a(s) pasta(s)
              
   //Copia as pastas e arquivos para os destinos caso exista as pastas na origem              
   if (Directory.Exists(sourcePathCapas))
       FileSystem.CopyDirectory(sourcePathCapas, destinationPath,
       UIOption.AllDialogs); 

Obs.: Será necessário incluir no projeto, a referência “Microsoft.VisualBasic”. 

Manipular diretórios e copiar arquivos em C# é uma tarefa simples, mas poderosa.

A API do .NET oferece várias funcionalidades que facilitam a interação com o sistema de arquivos, permitindo que você crie aplicações que lidam eficientemente com arquivos e pastas.

Dúvidas ou sugestões sobre como manipular diretórios e cópia de arquivos em C#? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
 https://youtube.com/criandobits

Tags:

Sobre o Autor

Benedito Silva Júnior
Benedito Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *