protected void OnArquivoEncontrado(EntradaEncontrada entrada)
 {
     if (InternalCancelado)
     {
         return;
     }
     if (ArquivoEncontrado != null)
     {
         ArquivoEncontradoEventArgs args = new ArquivoEncontradoEventArgs(entrada);
         OnArquivoEncontrado(args);
     }
 }
        protected void PesquisarDiretorio(string diretorioPai)
        {
            if (InternalCancelado)
            {
                return;
            }

            OnMensagemProgresso(diretorioPai);

            if (InternalCancelado)
            {
                return;
            }

            string[] listaArquivos;

            try
            {
                listaArquivos = Directory.GetFiles(diretorioPai, Contexto.NomeArquivo);
            }
            catch (Exception ex)
            {
                Logger.Default.LogAviso(String.Format(
                                            "Diretório {0}. Erro: {1}", diretorioPai, ex.Message));
                listaArquivos = null;
            }

            if (listaArquivos != null)
            {
                foreach (string arquivo in listaArquivos)
                {
                    if (InternalCancelado)
                    {
                        return;
                    }
                    if (Resultado.Count == Contexto.MaximoDeResultados)
                    {
                        return;
                    }

                    try
                    {
                        EntradaEncontrada entrada = new EntradaEncontrada(arquivo, EntradaEncontrada.eTipoEntrada.eTipoArquivo);
                        if (Contexto.FiltroArquivo != null)
                        {
                            if (!Contexto.FiltroArquivo.Filtrar(this, Contexto, entrada))
                            {
                                entrada = null;
                            }
                        }
                        if (entrada != null)
                        {
                            Resultado.Add(entrada);
                            OnArquivoEncontrado(entrada);
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.Default.LogAviso(String.Format(
                                                    "Arquivo {0}. Erro: {1}", arquivo, ex.Message));
                        return;
                    }
                }
            }

            if (InternalCancelado)
            {
                return;
            }

            string[] listaDiretorios;

            try
            {
                listaDiretorios = Directory.GetDirectories(diretorioPai);
            }
            catch (Exception ex)
            {
                Logger.Default.LogAviso(String.Format(
                                            "Diretório {0}. Erro: {1}", diretorioPai, ex.Message));
                return;
            }

            foreach (string diretorio in listaDiretorios)
            {
                if (InternalCancelado)
                {
                    return;
                }
                if (Resultado.Count == MaximoDeResultados)
                {
                    return;
                }

                if (Contexto.IgnorarPastasOcultas)
                {
                    DirectoryInfo info = new DirectoryInfo(diretorio);
                    if ((info.Attributes & FileAttributes.Hidden) > 0)
                    {
                        continue;
                    }
                }

                // Usa o filtro de diretório para retorno o diretório como um resultado
                // de pesquisa.
                if (Contexto.FiltroDiretorio != null)
                {
                    try
                    {
                        EntradaEncontrada entrada = new EntradaEncontrada(diretorio, EntradaEncontrada.eTipoEntrada.eTipoDiretorio);
                        if (Contexto.FiltroDiretorio.Filtrar(this, Contexto, entrada))
                        {
                            Resultado.Add(entrada);
                            OnArquivoEncontrado(entrada);
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.Default.LogAviso(String.Format(
                                                    "Diretório {0}. Erro: {1}", diretorio, ex.Message));
                        return;
                    }
                }

                // pesquisa em todos os diretórios independente do filtro de diretório
                if (Contexto.UseThreads)
                {
                    QueuePesquisarDiretorio(diretorio);
                }
                else
                {
                    PesquisarDiretorio(diretorio);
                }
            }
        }
Esempio n. 3
0
 public ArquivoEncontradoEventArgs(EntradaEncontrada entrada)
 {
     this.Entrada = entrada;
 }