Bloco Using no VB .NET

Hoje vamos ver algo do Visual Basic .NET, que particularmente não vejo muito, mas é bastante interessante; o bloco Using. Esse bloco permite que seja criada uma instancia de uma classe e ao final do bloco tal instancia é retirada da memória, sem que seja necessário, por exemplo, utilizar o método .Dispose().

Declarando bloco Using

A declaração básica desse bloco:

    Using classe As New classeQualquer

    End Using

Como no exemplo, a variável chamada classe, só é válida dentro do bloco Using, ou seja, se tentar utilizá-la fora do bloco, será acusado erro por falta de declaração de variável.

Importante: a classe que será instanciada no bloco Using, DEVE implementar a interface IDisposable. Uma classe que implementa tal interface, indica que conseguem por si própria, desalocar a memória que fora separada para uma instância.

Utilizando o bloco Using

Vamos ver em um exemplo prático, como utilizar o bloco Using.

Para o exemplo a seguir, utilizarei um código responsável por ler um arquivo de texto. Isso porque utilizarei a classe TextReader que implementa a interface IDisposable.

Using reader As System.IO.TextReader = System.IO.File.OpenText("arquivo.txt")
    Dim linhaArquivo As String

    linhaArquivo = reader.ReadLine()
    Do Until linhaArquivo Is Nothing
        Console.WriteLine(linhaArquivo)
        linhaArquivo = reader.ReadLine()
    Loop
End Using

Vejamos o que está sendo feito linha a linha.

Linha 1: criamos uma instancia da classe TextReader e para tanto, utilizamos o método OpenText, que lê um arquivo de texto e retorna um TextReader.

Linha 2: declaramos uma variável que será utilizada para ler cada linha do arquivo.

Linha 4: lê uma linha do arquivo utilizando o método ReadLine.

Linha 5: utilizamos a estrutura de repetição Do Until para lermos todas as linhas do arquivo. Veja que a condição para que ocorra uma iteração é que a variável linhaArquivo tenha algum valor.

Linha 6: escreve no console da aplicação a linha que foi lida.

Linha 7: utilizamos o método ReadLine novamente. Ao final do arquivo, quando não houver mais linhas, a variável linhaArquivo será igual a Nothing.

Linha 8: fim da estrutura de repetiçao Do Until.

Linha 9: fim do bloco Using.

Veja que para o nosso exemplo, o Using se mostra bastante útil, pois nesse caso, não precisamos nos preocupar em utilizar métodos para fechar o arquivo ou liberar o espaço alocado na memória, tudo isso é feito pela própria classe.

Por hoje é só. Espero que o bloco Using seja útil nas suas aplicações!

Lendo um Arquivo TXT no VB .NET

Veremos abaixo uma forma bem rápida ler um arquivo .txt no Visual Basic[bb] .NET.

Muitas coisa são formatadas para arquivos .txt, por exemplo NFe ou algumas aplicações que geram esses arquivos para integração[bb]com outros sistemas.

Abaixo você pode ver a forma mais rápida para ler um arquivo.

Imports System.IO
Public Class Form1
    Private Sub btnCarr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCarr.Click
        Dim texto As New StreamReader(txtCaminho.Text)
        txtArquivo.Text = texto.ReadToEnd
    End Sub
End Class

Como vocês podem ver esse é todo o código para a leitura de um arquivo.
Lógico que não há um verificação se existe o arquivo, mas com menos de 10 linhas é possível fazer a leitura.
Explicando o código.
Imports System.IO: Importa a Namespace IO que contém as classes necessárias para grande parte das entradas e saídas de texto.

Public Class Form1:  Declaração da classe do nosso formulário.

Private Sub btnCarr_Click: Declaração da procedure do clique no botão para carregar o texto.

Dim texto As New StreamReader(txtCaminho.Text):  Declara a variável texto do tipo StreamReader, classe para abertura de arquivo para leitura. Para criação da instancia é necessário passar o arquivo que será lido.

txtArquivo.Text = texto.ReadToEnd: Lê todo o arquivo e “joga” o texto no campo txtArquivo.

End Sub e End Class: Fim da procedure do botão e fim da classe do formulário, consecutivamente.

Uma outra forma é lendo linha por linha. Dessa forma você tem um controle do que está sendo lido, e pode tomar decisões a partir dai.

Imports System.IO
Public Class Form1
    Private Sub btnCarr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCarr.Click
        Dim texto As New StreamReader(txtCaminho.Text)
        While Not texto.EndOfStream
            txtArquivo.Text &= texto.ReadLine
        End While
    End Sub
End Class

Acima vocês podem ver que a única modificação é no momento da leitura, onde um laço controla se é o final do arquivo e o nosso campo txtArquivo recebe linha a linha do arquivo.

Onde:

While Not texto.EndOfStream: Indica que enquanto não for o fim do arquivo e executada uma ação. A cada passagem pelo While,  a leitura é passada para a próxima linha.

txtArquivo.Text &= texto.ReadLine: A ação é a leitura da linha corrente.