C# - Mesclando diretórios
Hoje veremos como mesclar o conteúdo de dois diretórios usando a linguagem C#. |
Vamos criar um pequeno programa na linguagem C# que vai permitir mesclar o conteúdo de dois diretórios selecionados.
Basicamente vamos mover os arquivos da pasta de origem para a pasta de destino, e, se houver um arquivo com mesmo nome, será anexado um número ao final do nome do arquivo para indicar que o arquivo já existia com o mesmo nome. Assim se já existir um arquivo com o nome de Teste.txt ele será movido e renomeado para Teste(1).txt.
Vejamos isso funcionando na prática.
Criando o projeto Windows Forms
Vamos criar um vou criar um projeto Windows Desktop usando o template Windows Forms App(.NET Framework) usando o VS 2017 Community com o nome Mesclando_Diretorios;
A partir da ToolBox inclua no formulário Form1.cs os controles:
Vamos definir o código do formulário.
Nos eventos Click dos botões btnProcurarOrigem e btnProcurarDestino vamos invocar o método Procurar passando a caixa de texto para receber a seleção do diretório feita pelo usuário usando o FolderBrowserDialog :
private void btnProcurarOrigem_Click(object sender, EventArgs e)
{
Procurar(txtDiretorioOrigem);
}
private void btnProcurarDestino_Click(object sender, EventArgs e) { Procurar(txtDiretorioDestino); } |
O código do método Procurar(Control ctrl) é visto a seguir:
private void Procurar(Control ctrl)
{
FolderBrowserDialog fbd1 = new FolderBrowserDialog();
DialogResult resultado = fbd1.ShowDialog();
// Define as propriedades do controle FolderBrowserDialog
fbd1.Description = "Selecione uma pasta";
fbd1.RootFolder = Environment.SpecialFolder.MyComputer;
fbd1.ShowNewFolderButton = true;
// Exibe a caixa de diálogo if (resultado == DialogResult.OK) { // Exibe a pasta selecionada ctrl.Text = fbd1.SelectedPath; } } |
No evento Click do botão Mesclar temos o código que valida a entrada do usuário e invoca o método MesclaDiretorios() :
private void btnMesclar_Click(object sender, EventArgs e)
{
if(Validacao(txtDiretorioOrigem.Text, txtDiretorioDestino.Text))
{
MesclaDiretorios(txtDiretorioOrigem.Text, txtDiretorioDestino.Text);
}
}
|
O código do método MesclaDiretorios() é dado abaixo:
private void MesclaDiretorios(string origem, string destino) { // Verifica se os diretórios terminam com \ if (!origem.EndsWith("\\")) { origem += "\\"; }
if (!destino.EndsWith("\\"))
// Move os arquivos
// Se o arquivo ja existir anexa um número
indicando que o arquivo ja existia
for (int i = 1; File.Exists(novo_nome); i++)
// Exibe o resultado |
Abaixo o código do método Validacao() que valida a entrada do usuário:
private bool Validacao(string origem, string destino)
{
if (string.IsNullOrEmpty(origem))
{
MessageBox.Show("O diretório é inválido...");
return false;
}
if (string.IsNullOrEmpty(destino))
{
MessageBox.Show("O diretório é inválido...");
return false;
}
if (!Directory.Exists(origem))
{
MessageBox.Show("O diretório não existe...");
return false;
}
if (!Directory.Exists(destino))
{
MessageBox.Show("O diretório não existe...");
return false;
}
if (origem.ToLower() == destino.ToLower())
{
MessageBox.Show("Os diretórios são iguais, informe novamente",
"Diretórios iguais", MessageBoxButtons.OK,MessageBoxIcon.Error);
return false;
}
return true;
}
|
Agora vamos testar o projeto.
Como diretório de origem vou usar a pasta c:\dados\Access que contém 3 arquivos conforme mostra a figura abaixo a esquerda:
A pasta de destino será a pasta c:\dados\db que contém dois arquivos sendo que o arquivo Northwind já existe na pasta de origem e portanto este arquivo deverá ser copiado tendo anexao ao seu nome o número 1:
Ao clicar no botão Mesclar vemos o resultado exibido na messagabox, onde temos 3 arquivos movidos e um renomeado:
Verificando a pasta de origem temos que ela esta vazia pois os arquivos foram movidos:
Na pasta de destino temos os arquivos copiados sendo que o arquivo Northwind(1) foi renomeado pois veio da pasta de origem e já existia na pasta de destino:
Pegue o código do projeto aqui : Mesclando_Diretorios.zip
"Disse-lhe, pois, Pilatos: Logo tu és rei? Jesus
respondeu: Tu dizes que eu sou rei. Eu para isso nasci, e para isso vim ao
mundo, a fim de dar testemunho da verdade. Todo aquele que é da verdade ouve a
minha voz."
João 18:37
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
C# - Entendo o I/O na plataforma .NET - Macoratti
C# - Lendo e escrevendo em arquivos textos e binários - Macoratti.net
LINQ- Mesclando dois arquivos distintos e agrupando ... - Macoratti
C# - Combinando Imagens - Macoratti.net
VB .NET - Mesclando e imprimindo imagens - Macoratti
C# - Bloqueando Pastas - Macoratti
C# - Exibindo imagens de uma pasta - Macoratti