C# - Copiando e movendo e deletando arquivos
Hoje vou mostrar como podemos copiar, mover e deletar arquivos de maneira síncrona usando as classes System.IO.File, System.IO.Directory, System.IO.FileInfo e System.IO.DirectoryInfo do namespace System.IO. |
Vamos criar um pequeno projeto Windows Forms que permitirá selecionar arquivos e pastas e realizar operações com arquivos.
recursos usados:
Criando o projeto no VS 2019 Community
Vamos criar um projeto usando a linguagem C# do tipo Windows Forms para .NET Framework :
Podemos chamar o projeto de WF_TrataArquivos.
No formulário padrão form1.cs vamos criar uma interface bem simples e intuitiva usando os seguintes controles:
Conforme o leiaute da figura abaixo:
Os namespaces usados no projeto são:
using System;
using System.Windows.Forms;
using System.IO;
Ao lad do primeiro TextBox temos um botão para selecionar o arquivo a ser copiado ou movido.
No evento Click deste botão - btnSelecionaArquivo - temos o código abaixo:
private void BtnSelecionaArquivo_Click(object sender, EventArgs e)
{
OpenFileDialog ofd1 = new OpenFileDialog();
//define as propriedades do controle OpenFileDialog
ofd1.Multiselect = false;
ofd1.Title = "Selecionar Arquivo";
ofd1.InitialDirectory = @"C:\dados\txt";
//filtra para exibir todos os arquivos
ofd1.Filter = "All files (*.*)|*.*";
ofd1.CheckFileExists = true;
ofd1.CheckPathExists = true;
ofd1.FilterIndex = 1;
ofd1.RestoreDirectory = true;
ofd1.ReadOnlyChecked = true;
ofd1.ShowReadOnly = true;
DialogResult dr = ofd1.ShowDialog();
if (dr == DialogResult.OK)
{
//atribui o nome do arquivo ao arquivo texto
txtArquivo.Text = ofd1.FileName;
}
}
|
Este código abre uma janela de diálogo - OpenFileDialog - e permite ao usuário selecionar um arquivo.
No segundo TextBox temos um botão que permite selecionar o diretório de destino.
No evento Click deste botão - BtnSelecionaDiretorio - temos o código abaixo:
private void BtnSelecionaDiretorio_Click(object sender, EventArgs e) { FolderBrowserDialog fbd1 = new FolderBrowserDialog(); fbd1.Description = "Selecione o diretório de destino";
//define pasta inicial
fbd1.RootFolder = Environment.SpecialFolder.MyComputer;
fbd1.ShowNewFolderButton = true;
if (fbd1.ShowDialog() == DialogResult.OK)
{
// Exibe a pasta selecionada
txtDiretorio.Text = fbd1.SelectedPath;
}
}
|
Este código abre uma janela de diálogo - FolderBrowserDialog - e permite ao usuário selecionar um diretório.
A seguir temos dois radiobuttons - rdbCopiar e rdbMover - que permite selecionar a operação desejada
No evento botão Click do botão - Realizar Operação - temos o código a seguir:
private void
btnRealizarOperacao_Click(object sender, EventArgs e) { if (!string.IsNullOrEmpty(txtArquivo.Text) && !string.IsNullOrEmpty(txtDiretorio.Text)) { try { string origem = txtArquivo.Text; string arquivo = Path.GetFileName(origem); string destino = Path.Combine(txtDiretorio.Text, arquivo); if (rdbCopiar.Checked)
{
//copia o arquivo e sobrescreve se ja existir
File.Copy(origem, destino, true);
MessageBox.Show($"Arquivo {origem} Copiado com sucesso \npara {destino}");
}
else if(rdbMover.Checked)
{
if(File.Exists(destino))
{
if (MessageBox.Show("O arquivo já existe. Deseja deletar o arquivo e continuar ?", "Confirma",
MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{
try
{
File.Delete(destino);
}
catch (IOException ex)
{
Console.WriteLine(ex.Message);
return;
}
}
else
{
return;
}
}
File.Move(origem, destino);
MessageBox.Show($"Arquivo {origem} Movido com sucesso \npara {destino}");
}
}
catch (Exception ex)
{
MessageBox.Show("Erro : " + ex.Message);
}
}
else
{
MessageBox.Show("Selecione um arquivo e um diretório de destino");
}
}
|
Neste código estamos realizando as seguintes operações:
Executando o projeto teremos o resultado a seguir:
Os conceitos aqui mostrados devem ser conhecidos por todo o desenvolvedor C# da mesma forma que conhecemos de cor a tabuada do 10.
Pegue o projeto completo aqui: CShp_TrataArquivos.zip
"Quem ama a
sua vida perdê-la-á, e quem neste mundo odeia a sua vida, guardá-la-á para a
vida eterna.
Se alguém me serve, siga-me, e onde eu estiver, ali estará também o meu servo.
E, se alguém me servir, meu Pai o honrará."
João 12:25,26
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
C# - StreamReader, StringReader e TextReader . Qual a ... - Macoratti
C# - Imprimindo um arquivo texto - Macoratti
C# - Usando OpenFileDialog - Macoratti
C# - Formatando arquivos textos - Macoratti
C# - Lendo e escrevendo em arquivos textos e binários - Macoratti
C# - Localizando Arquivos - Macoratti