 VB 
.NET - 
Localizando arquivos locais 
por nome ou partes do nome
VB 
.NET - 
Localizando arquivos locais 
por nome ou partes do nome|  | Neste artigo vou mostrar como podemos localizar arquivos locais usando com critério a localização a sua extensão e o nome ou parte do nome do arquivo. |  | 
Vou destacar as principais rotinas e eventos usados no projeto, que já estão comentadas.
Recursos Usados:
Criando o projeto no VS Community 2017
Abra no VS community 2017 e no menu File clique em New Project;
A seguir selecione o template Visual Basic -> Windows -> Windows Forms Application e informe o nome VbnEncontraArquivo e clique em OK;
Agora abra o formulário Form1.vb e inclua os seguintes controles no formulário:
3 Labels
4 TextBox
2 Buttons
1 FolderBrowserDialog
Disponha os controles conforme o leiaute da figura abaixo:

Definindo o código do formulário
Inclua o seguinte namespace no formulário:
Imports System.IO
1- Código do botão de comando para selecionar o diretório de busca
No evento btnProcurarEm_Click temos o código que vai permitir ao usuário selecionar uma pasta onde a busca vai ser feita usando o FolderBrowserDialog:
|   Private Sub btnProcurarEm_Click(sender As Object, e As EventArgs) Handles btnProcurarEm.Click        'Define as propriedades do controle FolderBrowserDialog
        fbd1.Description = "Selecione uma pasta de origem da busca"
        fbd1.RootFolder = Environment.SpecialFolder.MyComputer
        fbd1.ShowNewFolderButton = True        'Exibe a caixa de diálogo
        If fbd1.ShowDialog = Windows.Forms.DialogResult.OK Then
            'Exibe a pasta selecionada
            txtOrigem.Text = fbd1.SelectedPath
        End If
    End Sub | 
2- Código do botão de comando Localizar
Neste código chamamos o método ProcuraArquivos() passando os parâmetros informados pelo usuário :
|   Private Sub btnLocalizar_Click(sender As Object, e As EventArgs) Handles btnLocalizar.Click        txtResultado.Text = ""        'Permite no mínimo 3 caracteres
        If txtCriterio.Text.Length < 3 Then
            MsgBox("Informe no mínomo 3 caracteres")
            Return
        End If        'verifica se os parâmteros foram informados
        If Not String.IsNullOrEmpty(txtOrigem.Text) Or String.IsNullOrEmpty(txtExtensao.Text) Or String.IsNullOrEmpty(txtCriterio.Text) Then
            'chama o método para procurar os arquivos
            ProcuraArquivos(txtOrigem.Text, txtExtensao.Text, txtCriterio.Text)
        Else
            MessageBox.Show("Defina a pasta incial de busca e/ou o padrão de arquivos", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If    End Sub | 
3- Código do método ProcuraArquivos()
Neste código invocamos o método LocalizaArquivos passando os parâmetros e usando a enumeração SearchOption que especifica se deve pesquisar o diretório atual ou o diretório atual e todos os subdiretórios.
A opção usada - TopDirectoryOnly - Inclui apenas o diretório atual em uma operação de pesquisa.
|      ''' <summary>
    ''' Procura arquivos com base na pasta de origem , extensão 
    ''' </summary>
    ''' <param name="pastaOrigem"></param>
    ''' <param name="extensao"></param>
    ''' <param name="padrao"></param>
    Private Sub ProcuraArquivos(pastaOrigem As String, extensao As String, padrao As String)
        Try
            'Invoca o método LocalizaArquivos e recebe a lista de arquivos encontrada
            Dim resultado As List(Of FileInfo) = LocalizarArquivos(pastaOrigem, IO.SearchOption.TopDirectoryOnly, extensao, padrao)'percorre a lista de arquivos e exibe no textbox For Each arquivo As IO.FileInfo In resultado txtResultado.Text = txtResultado.Text & arquivo.Name & vbNewLine Next 'exibe mensagem de arquivos encontrados MessageBox.Show("Foram encontrados " + resultado.Count.ToString + " arquivos.") Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub 
 | 
4 - Código do método LocalizarArquivos()
Neste código o método LocalizarArquivos usa o método GetFiles que retorna os nomes dos arquivos que atendem aos critérios especificados.
|       Private Function LocalizarArquivos(ByVal diretorio As String,
                                                            ByVal recursive As SearchOption,
                                                            ByVal ext As String,
                                                            ByVal palavra_no_nome_do_arquivo As String) As List(Of IO.FileInfo)        Return IO.Directory.GetFiles(diretorio, "*" & If(ext.StartsWith("*"), ext.Substring(1), ext), recursive) _
                                       .Where(Function(o) o.ToLower.Contains(palavra_no_nome_do_arquivo.ToLower)) _
                                       .Select(Function(p) New IO.FileInfo(p)).ToList    End Function | 
Executando o projeto teremos o resultado a seguir:

Pegue o projeto completo aqui:  Vbn_EncontraArquivo.zip
 
Vbn_EncontraArquivo.zip
"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:26
| 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 ? | 
  Gostou ?   Compartilhe no Facebook
Compartilhe no Facebook
  
 Compartilhe no Twitter
 
Compartilhe no Twitter 
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
VB .NET - Pesquisando Drivers, Diretórios e Arquivos - Macoratti