C# -  Exibindo uma caixa de diálogo de progresso durante a copia de arquivos


 
Neste artigo vou mostrar como exibir uma caixa de diálogo de progresso durante a cópia de arquivos da origem para o destino usando a linguagem C# em uma aplicação do tipo Console Application.
 
Recursos usados:

Criando o projeto

 

Abra o Visual Studio Express 2102 for Windows Desktop e clique em New Project;

 

Selecione o template Visual C# -> Console Application e informe nome CopiandoArquivos e clique no botão Ok;

 

 

Clique no menu PROJECT e a seguir em Add Reference;

 

Marque a guia Assemblies e selecione o item Microsoft.VisualBasic clicando no botão OK;

 

 

Na janela Solution Explorer selecione o arquivo Program.cs e digite o código abaixo no arquivo:

 

Note a referência ao namespace Microsoft.VisualBasic.FileIO.

 

using System;
using Microsoft.VisualBasic.FileIO;
namespace CopiandoArquivos
{
    class Program
    {
        static void Main(string[] args)
        {
            //Definindo o caminho de origem
            string origem = @"J:\Origem";
            //Definindo o caminho de destino
            string destino = @"F:\Destino";
            try
            {
                Console.WriteLine("Iniciando a cópia de arquivo....");
                //Copiando o arquivo da origem para o destino
                FileSystem.CopyDirectory(origem,destino, UIOption.AllDialogs);       
                Console.WriteLine("Arquivo copiado com sucesso !!!");
                Console.ReadKey();
            }
            //Se a operação for cancelada
            //lança um exceção 
            catch (OperationCanceledException)
            {
                Console.WriteLine("Cópia de arquivo cancelada !!!");
                Console.ReadKey();
            }
        }
    }
}

 

Usamos o método FileSystem.CopyDirectory que copia o conteúdo de um diretório para outro diretório.

Sintaxe:

public static void CopyDirectory(string sourceDirectoryName, string destinationDirectoryName, UIOption showUI )

Parâmetros

sourceDirectoryName
Tipo: System.String
O diretório a ser copiado.
destinationDirectoryName
Tipo: System.String
O local ao qual o conteúdo da pasta deve ser copiado.
showUI
Tipo: Microsoft.VisualBasic.FileIO.UIOption
Decida se deseja controlar visualmente o andamento da operação. O padrão é UIOption.OnlyErrorDialogs.

Exemplo de Uso:(VB .NET)
My.Computer.FileSystem.CopyDirectory("C:\TesteDiretorio1", "C:\TesteDiretorio2", True)

Esse método copia o conteúdo da pasta de origem para o diretório de destino. Se o diretório de destino não existir, ele é criado. Se um diretório com o mesmo nome existir no local de destino, o conteúdo dos dois diretórios serão mesclados. Você pode especificar um novo nome para o diretório durante a operação.

Ao copiar arquivos em um diretório, exceções podem ser lançadas causadas por um arquivo específico. Quando essas exceções são lançadas, são consolidados em uma única exceção cuja propriedade Data trata entradas na forma de um IDictionary em que o caminho do arquivo ou diretório é a chave e a mensagem de exceção específica é contida no valor correspondente. Use For…Each para enumerar as entradas.

Estamos usando também a enumeração UIOption.AllDialogs que especifica quais caixas de diálogo mostrar quando copiar, excluir ou mover arquivos ou diretórios.

 

AllDialogs Mostra a caixa de diálogo de progresso e qualquer caixa de diálogo de erro
OnlyErrorDialogs Somente mostrar caixas de diálogo de erro e ocultar as caixas de diálogo de progresso. Padrão

 

A pasta de origem deve conter um arquivo de tamanho razoável para que possamos visualizar janela de diálogo com a barra de progresso.

 

Executando o projeto iremos obter o seguinte resultado:

 

 

E já acabou. Simples não é mesmo ???

 

Pegue o projeto completo aqui :  CopiandoArquivos.zip

Gálatas 6:2 Levai as cargas uns dos outros, e assim cumprireis a lei de Cristo.

Gálatas 6:3 Pois, se alguém pensa ser alguma coisa, não sendo nada, engana-se a si mesmo.

Gálatas 6:4 Mas prove cada um a sua própria obra, e então terá motivo de glória somente em si mesmo, e não em outrem;

Gálatas 6:5 porque cada qual levará o seu próprio fardo.

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti