none
Comparação de arquivos entre pastas RRS feed

  • Pergunta

  • Pessoal, estou com a seguinte dúvida:

    Preciso gerar um sistema que olhe os arquivos da Pasta A, comparar estes com a Pasta B. Os arquivos de A que não estejam em B, movo para a Pasta C.

    Já sei como listar todos os arquivos de uma pasta, mas não sei como pegar estalista de arquivos e compara a existência deles em outra pasta.

    O comando para mover os arquivos, também sei fazê-lo.

    Obrigado.

    quarta-feira, 2 de abril de 2014 15:00

Respostas

  • Basicamante o que você precisa são as classes DirectoryInfo e FileInfo. Fiz um exemplo de como você pode fazer isso:

                System.IO.DirectoryInfo pastaA = new System.IO.DirectoryInfo("Caminho da pasta a");
                System.IO.DirectoryInfo pastaB = new System.IO.DirectoryInfo("Caminho da pasta b");
                System.IO.DirectoryInfo pastaC = new System.IO.DirectoryInfo("Caminho da pasta c");
                
                System.IO.FileInfo[] arquivosPastaA = pastaA.GetFiles();
                System.IO.FileInfo[] arquivosPastaB = pastaB.GetFiles();
                
                foreach(System.IO.FileInfo fileA in arquivosPastaA)
                {
                    bool match = false;
                    foreach(System.IO.FileInfo fileB in arquivosPastaB)
                    {
                        if(fileA.Name == fileB.Name)
                        {
                            match = true;
                            break;
                        }
                    }
                    
                    if(!match)
                    {
                        fileA.MoveTo(pastaC.FullName + "\\" + fileA.Name)
                    }
                }

    Não testei, mas o conceito é esse...


    Herbert Lausmann

    • Sugerido como Resposta Giovani Cr quarta-feira, 2 de abril de 2014 18:09
    • Marcado como Resposta lsoares25 quinta-feira, 3 de abril de 2014 00:07
    quarta-feira, 2 de abril de 2014 15:40

Todas as Respostas

  • Basicamante o que você precisa são as classes DirectoryInfo e FileInfo. Fiz um exemplo de como você pode fazer isso:

                System.IO.DirectoryInfo pastaA = new System.IO.DirectoryInfo("Caminho da pasta a");
                System.IO.DirectoryInfo pastaB = new System.IO.DirectoryInfo("Caminho da pasta b");
                System.IO.DirectoryInfo pastaC = new System.IO.DirectoryInfo("Caminho da pasta c");
                
                System.IO.FileInfo[] arquivosPastaA = pastaA.GetFiles();
                System.IO.FileInfo[] arquivosPastaB = pastaB.GetFiles();
                
                foreach(System.IO.FileInfo fileA in arquivosPastaA)
                {
                    bool match = false;
                    foreach(System.IO.FileInfo fileB in arquivosPastaB)
                    {
                        if(fileA.Name == fileB.Name)
                        {
                            match = true;
                            break;
                        }
                    }
                    
                    if(!match)
                    {
                        fileA.MoveTo(pastaC.FullName + "\\" + fileA.Name)
                    }
                }

    Não testei, mas o conceito é esse...


    Herbert Lausmann

    • Sugerido como Resposta Giovani Cr quarta-feira, 2 de abril de 2014 18:09
    • Marcado como Resposta lsoares25 quinta-feira, 3 de abril de 2014 00:07
    quarta-feira, 2 de abril de 2014 15:40
  • Perfeito!

    Muito obrigado!

    Só teve um porém, este código só funciona se tiver um item na pasta, com 2 ou mais ele não executa nada.
    • Editado lsoares25 quinta-feira, 3 de abril de 2014 00:21
    quinta-feira, 3 de abril de 2014 00:08
  • Perfeito!

    Muito obrigado!

    Só teve um porém, este código só funciona se tiver um item na pasta, com 2 ou mais ele não executa nada.

    Não entendi.

    Herbert Lausmann

    quinta-feira, 3 de abril de 2014 13:13
  • Problema resolvido.

    Obrigado!

    quinta-feira, 3 de abril de 2014 23:58