VB.NET - Operações básicas com arquivos


Neste artigo vou mostrar rapidamente as algumas operações básicas com arquivos usando o VB.NET. Iremos usar o namespace : System.IO , por isto devemos referenciá-lo em nosso projeto se não quisermos digitar nomes longos para comandos usados no exemplo.

Abaixo mostramos as classes :

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 :

  1. Os métodos fornecidos pelo VB.NET em tempo de execução
  2. O FileSystemObject (lembra dele)
  3. Os métodos oferecidos pela CLR - Common Language Runtime

Com o tempo vamos adquirindo experiência e saberemos qual o melhor alternativa usar.

Eu estou usando a release final do Visual Studio , mas creio que os exemplos aqui mostrados também funcione na versão beta 2 (não testei).As tarefas básicas que iremos abordar serão as seguintes :

Por tabela você também aprende com usar MessageBox e InputBox no VB.NET. Vamos lá...

  1. Inicie um novo projeto no Visual Studio do tipo - Visual Basic Projects usando o template Windows Application
  2. O nome do projeto será AcessaBD e será salvo na pasta c:\vbnet
  3. No formulário padrão insira os seguintes controles :(conforme o layout abaixo)
    - uma label - label1

    - um TextBox - textbox1

    - cinco botões de comandos

    button1 , button2 , button3 , button4 e button5

    - um ListBox - Listbox1

    - um GroupBox - Groupbox1

    - um ListBox - ListBox1

Agora vamos ao código do projeto:

Criando diretórios e subdiretórios

- No evento click do botão - Button1 - insira o código abaixo que irá criar um diretório/subdiretório conforme informado na caixa de texto : TextBox1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

If TextBox1.Text <> "" Then

Directory.CreateDirectory(TextBox1.Text)

MessageBox.Show("O diretório <<" & TextBox1.Text & ">> foi cria com sucesso !!", "VB.NET - Criando Diretórios", MessageBoxButtons.OK, MessageBoxIcon.Information)

Else

MessageBox.Show("Informe o caminho e nome do diretorio que deseja Criar !", "VB.NET - Criando Diretórios", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End If

End Sub

Ao executar o projeto e clicar no botão - Criar Diretório - teremos o seguinte resultado:

A instrução que efetivamente cria o diretório é :

Directory.CreateDirectory(TextBox1.Text)

Aqui usamos o método CreateDirectory.

- No exemplo eu criei o diretório dir_1 .

- De propósito eu informei um caminho onde o subdiretórios macoratti e teste não existiam ; no entanto eles foram criados.

- Se tentar fazer isto no VB6 usando o filesystemobject vai obter um erro.

Excluindo diretórios e subdiretórios

- No evento click do botão - Button2 - insira o código abaixo que irá excluir um diretório/subdiretório conforme informado na caixa de texto : TextBox1

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

If TextBox1.Text <> "" Then

If Directory.Exists(TextBox1.Text) Then

Directory.Delete(TextBox1.Text)

MessageBox.Show("O diretório <<" & TextBox1.Text & ">> foi excluida com sucesso !!", "VB.NET - Criando Diretórios", MessageBoxButtons.OK, MessageBoxIcon.Information)

Else

MessageBox.Show("O diretório <<" & TextBox1.Text & ">> não existe, Verifique !!", "VB.NET - Criando Diretórios", MessageBoxButtons.OK, MessageBoxIcon.Information)

End If

Else

MessageBox.Show("Informe o caminho e nome do diretorio que deseja Excluir !", "VB.NET - Criando Diretórios", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End If

End Sub

Ao executar o projeto e clicar no botão - Exclui Diretório - teremos o seguinte resultado:-

- Para excluir o diretório usamos o método - Directory.Delete(TextBox1.Text)

- Antes de executar a instrução verificamos se o diretório existe usando o método - Exists - Directory.Exists(TextBox1.Text)

Listando o conteúdo de diretórios e subdiretórios

- No evento click do botão - Button3 - insira o código abaixo que irá listar o conteúdo de um diretório/subdiretório conforme informado na caixa de texto : TextBox1

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
 Handles Button3.Click
Dim nomearq As String
Dim subdir As String

If TextBox1.Text <> "" Then
   Dim msg, titulo, valor As String
   Dim objValor As Object
   msg = "Informe a extensão do arquivo.Exemplo: *.exe "
   titulo = "Listar arquivos" ' define o titulo.
   valor = "*.exe"            ' define o valor padrao
 ' Exibe mensagem posicionada 
  
   objValor = InputBox(msg, titulo, valor, 200, 200)

    Me.ListBox1.Items.Clear()
    Me.ListBox1.Items.Add(New String(TextBox1.Text))

    For Each nomearq In Directory.GetFiles(TextBox1.Text, objValor)
        Me.ListBox1.Items.Add(New String(nomearq))
     Next
Else
     MessageBox.Show("Informe o caminho/nome do diretorio para Listar !", "VB.NET - Criando Diretórios",
 MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End If
End Sub

O conteúdo do diretório informado é exibido em uma caixa de listagem - ListBox . Podemos usar um filtro para exibir arquivos com determinada extensão. Usamos uma InputBox para receber esta informação.

Ao executar o projeto e clicar no botão - Exibe Conteúdo - teremos o resultado a seguir.

- Definimos a função InputBox para permitir ao usuário informa a extensão dos arquivos que deseja listar :
Dim msg, titulo, valor As String
Dim objValor As Object
msg = "Informe a extensão do arquivo.Exemplo: *.exe "
titulo = "Listar arquivos"
' define o titulo.
valor = "*.exe"
' define o valor padrao
' Exibe mensagem posicionada

objValor = InputBox(msg, titulo, valor, 200, 200)

- Usando o método GetFiles para retornar o nome dos arquivos no diretório informado:
For Each nomearq In Directory.GetFiles(TextBox1.Text, objValor)
Me.ListBox1.Items.Add(New String(nomearq))
Next

Exibindo os atributos de um arquivo

Obtemos os atributos do arquivo informado em - TextBox1 - através dos métodos da classe - System.IO.File -

e da classe - FileVersionInfo - que fornece informações sobre atributos de um arquivo. Algumas das propriedades da classe estão listadas abaixo:

Comments Obtém os comentários associados ao arquivo.
CompanyName Obtém o nome da empresa que criou o arquivo.
FileBuildPart Obtém o número de criação do arquivo.
FileDescription Obtém a descrição do arquivo.
FileVersion obtem o número da versão
InternalName obtém o nome interno do arquivo , se existir.

- No evento click do botão - Button4 - insira o código abaixo que irá exibir os atributos de um arquivo conforme informado na caixa de texto : TextBox1

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim nomearq As String
If TextBox1.Text <> "" Then
   If File.Exists(TextBox1.Text) Then
     Dim fvi As FileVersionInfo = FileVersionInfo.GetVersionInfo(TextBox1.Text)
     Me.ListBox1.Items.Clear()
     Me.ListBox1.Items.Add(New String(TextBox1.Text))
     Me.ListBox1.Items.Add(New String("Data da criação : " & File.GetCreationTime(TextBox1.Text)))
     Me.ListBox1.Items.Add(New String("Último acesso : " & File.GetLastAccessTime(TextBox1.Text)))
     Me.ListBox1.Items.Add(New String("Última alteração : " & File.GetLastWriteTime(TextBox1.Text)))
     Me.ListBox1.Items.Add(New String("Nome da Empresa : " & fvi.CompanyName))
     Me.ListBox1.Items.Add(New String("Versão : " & fvi.FileVersion))
     Me.ListBox1.Items.Add(New String("Descrição : " & fvi.FileDescription))
    Else
     MessageBox.Show("O Arquivo/diretório <<" & TextBox1.Text & ">> não existe, Verifique !!",
 "VB.NET - Criando Diretórios", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End If
Else
    MessageBox.Show("Informe o caminho e nome do diretorio para exibir atributos !",
 "VB.NET - Criando Diretórios", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End If
End Sub

Ao executar o projeto e clicar no botão - Mostrar Conteúdo- teremos o resultado a seguir.

- O resultado é exibido na caixa de listagem - ListBox1.

Me.ListBox1.Items.Add(New String("Data da criação : " & File.GetCreationTime(TextBox1.Text)))

Finalmente o código associado ao evento click do botão - Button5 - que encerra o sistema.

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

If MessageBox.Show("Deseja realmente sair ? ", "Encerrar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then

End

End If

Deu para sentir que o VB.NET possui recursos que nos permitem obter resultados com pouco código. Neste artigo procurei mostrar alguns destes recursos de forma simples para você ir se acostumando...

Até o próximo artigo VB.NET...

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 ?

         Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti