![]() |
No artigo de hoje vamos recordar como acessar arquivos usando os recursos da linguagem VB .NET. |
![]() |
O VB.NET permite que o tratamento de arquivos possa ser feito de uma centena de formas diferentes , e, isto pode causar uma certa confusão. Podemos dividir as alternativas em três categorias :
Então qual o melhor caminho ?
A resposta a essa pergunta vai depender de diversos fatores.
Com o tempo vamos adquirindo experiência e saberemos qual o melhor alternativa usar.
Neste artigo eu vou tratar basicamente da classe Directory do namespace System.IO, mais especificamente dos métodos GetFiles e GetDirectories.
Recursos usados:
MS Access 2007
Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.
Criando o projeto no Visual Studio 2015 Community
Abra o VS 2015 Community e clique em New Project;
Selecione Other Project Types -> Visual Studio Solutions -> Blank Solution;
Informe o nome VBNET_Arquivos e clique no botão OK;
A seguir a partir da ToolBox inclua no formulário form1.vb os seguintes controles :
Disponha os controles conforme o leiaute da figura abaixo:
Defina os seguintes namespaces usados no formulário:
Imports System.IO Imports System.IO.Directory
Agora no evento click do botão - Listar Diretórios - vamos incluir o código abaixo que lista os diretórios conforme as definições dos critérios usando o método GetDirectories da classe Directory.
Private Sub btnListarDiretorios_Click(sender As Object, e As EventArgs) Handles btnListarDiretorios.Click
'limpa o listbox
lbDiretorios.Items.Clear()
Try
'define o diretorio raiz
Dim raiz As String = IIf(txtDiretorioRaiz.Text = String.Empty, "c:\", txtDiretorioRaiz.Text)
'define o critério para o nome dos diretorios
Dim criterio As String = IIf(txtCriterioDiretorio.Text = String.Empty, "*", txtCriterioDiretorio.Text)
'obtem os diretórios conforme os critérios acima
For Each Dir As String In GetDirectories(raiz, criterio, IIf(chkOpcao.Checked, SearchOption.AllDirectories, SearchOption.TopDirectoryOnly))
lbDiretorios.Items.Add(Dir)
Next
'exibe a quantidade de diretórios
lblDiretorios.Text = lbDiretorios.Items.Count.ToString + " Diretórios encontrados."
'habilita o botão para listar arquivos
btnListarArquivos.Enabled = True
Catch ex As Exception
MessageBox.Show("Erro " + ex.Message)
End Try
End Sub
|
O código esta comentado e não necessita mais detalhes. Vale apenas citar a sintaxe do método GetDirectories:
Public Shared Function GetDirectories ( path As String, searchPattern As String ) As String()
Onde :
path
- Indica o caminho absoluto ou relativo do diretório a procurar.
searchPattern - Representa a cadeia de caracteres de pesquisa para
correspondência com os nomes dos arquivos em path. Esse parâmetro pode conter
uma combinação de caminho literal válido e o caractere curinga (* e ?) , mas não
oferece suporte a expressões regulares.
* |
|
|
A seguir inclua no evento Click do botão de comando - Listar Arquivos - o código que lista os arquivos do diretório selecionado usando os métodos GetFiles() da classe Directory e GetFileName() da classe Path.
Private Sub btnListarArquivos_Click(sender As Object, e As EventArgs) Handles btnListarArquivos.Click
'limpa o listbox
lbArquivos.Items.Clear()
'verifica se um diretório foi selecionado ou não
If Not lbDiretorios.SelectedItem = Nothing Then
Try
'define o critério para o nome dos arquivos
Dim criterio As String = IIf(txtCriterioArquivo.Text = String.Empty, "*", txtCriterioArquivo.Text)
' obtem os arquivos do diretorio selecioonado conforme o critério
' lista apenas os nomes dos arquivos usando uma expressão lambada e o método GetFileName
Dim arquivos = GetFiles(lbDiretorios.SelectedItem, criterio).Select(Function(arq) Path.GetFileName(arq))
'verifica se existem arquivos encontrados
If arquivos.Count > 0 Then
'percorre e exibe os nomes dos arquivos
For Each nomeArquivo As String In arquivos
lbArquivos.Items.Add(nomeArquivo)
Next
'exibe a quantidade de arquivos
lbArquivos.Text = lbArquivos.Items.Count.ToString + " Arquivos encontrados."
Else
lbArquivos.Items.Add("Nenhum arquivo encontrado")
End If
Catch ex As Exception
MessageBox.Show("Erro " + ex.Message)
End Try
Else
MessageBox.Show("Selecione o diretório desejado.")
End If
End Sub
|
Neste código vale destacar a expressão lambda usada na linha de código abaixo para obter o nome dos arquivos:
Dim arquivos = GetFiles(lbDiretorios.SelectedItem, criterio).Select(Function(arq) Path.GetFileName(arq))
As expressões lambdas são funções ou sub-rotinas que podem conter expressões e declarações que são usadas para criar delegates e árvores de expressões onde o tipo das variáveis não precisam ser declarados visto que elas usam métodos anônimos.
Desta forma podemos declarar a expressão lambda e chamar a função passando um valor ao parâmetro. Você cria uma expressão lambda usando as palavras reservadas Sub ou Function.
Executando o projeto e definindo algumas opções iremos obter o seguinte resultado:
Deitar-me faz em verdes pastos, guia-me
mansamente a águas tranqüilas.Refrigera a minha alma; guia-me pelas veredas da
justiça, por amor do seu nome.
Salmos 23:2,3
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 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Visual Basic - Operações com arquivos e diretórios - Macoratti.net