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
"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 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