Lendo e escrevendo em arquivo Textos

 

Neste artigo vou mostrar como ler e escrever em arquivos textos no VB.NET. Se você já fez isto no VB 6.0 e no VB 5.0 vai perceber que houve uma grande mudança , afinal , desde os tempos do Basic os comandos usados eram praticamente os mesmos.

 

O VB.NET introduziu um novo forma orientada a objetos de trabalhar com arquivos . O namespace System.IO fornece diversas classes para trabalhar com arquivos textos , arquivos binários e streams de bytes. As classes contém diversos métodos para as operações mais comuns com arquivos : copiar , excluir, manipular os atributos , etc...

 

Para ler arquivos textos vamos usar a classe StreamReader e os métodos Read e Readline. Para escrever em arquivos textos iremos usar a classe StreamWriter e os métodos Write e WriteLine.

 

Geralmente quando vamos tratar arquivos textos e realizar operações de leitura e escrita precisamos verificar se um determinado arquivo existe , fazemos isto usando a classe System.IO.File que possui os seguintes métodos :

 

AppendText Cria um StreamWriter anexa texto UTF-8 a um arquivo existente.
Copy Overloaded. Copia um arquivo existente para um novo arquivo.
Create Overloaded. Cria um arquivo no diretório especificado.
CreateText Cria ou abre um novo arquivo para escrita.
Delete Exclui um arquivo definido
Exists Determina se um arquivo existe.
GetAttributes Obtêm os atributos do arquivo especificado.
GetCreationTime Retorna a data e hora de criação para o arquivo ou pasta definido.
GetLastAccessTime Retorna a data e hora de criação para o arquivo ou pasta definido acessado pela última vez.
GetLastWriteTime Retorna a data e hora de criação para o arquivo ou pasta definido escrito pela última vez.
Move Move um arquivo definido para um novo local.
Open Overloaded. Abre um FileStream no caminho indicado.
OpenRead Abre um arquivo para leitura.
OpenText Abre um arquivo existente para leitura.(UTF-8)
OpenWrite Abre um arquivo existente para escrita.

A teoria

O método CreateText  cria um arquivo texto e retorna um objeto System.IO.Writer  ; usando o objeto System.IO.Writer podemos escrever no arquivo texto.  Para criar um arquivo texto usamos o seguinte código :

Dim oArquivo as System.IO.File
Dim oEscrever as System.IO.StreamWriter

oEscrever = oArquivo.CreateText ("c:\teste\teste.txt")

O método OpenText abre um arquivo texto para leitura e retorna um objeto System.IO.StreamReader , com este objeto podemos ler o arquivo. Para abrir um arquivo texto para leitura usamos o seguinte código :

Dim oArquivo as System.IO.File
Dim oLeitura as System.IOStreamReader

oLeitura = oArquivo.OpenText("c:\teste\teste.txt")

Os métodos da classe System.IO.Writer para escrever em um arquivo texto são :

Bem agora vamos ao trabalho.

1 - Inicie um novo projeto no Visual Studio.NET com as seguintes características (sinta-se a vontade para alterar a seu gosto.)

  1. Project Types : Visual Basic Projects
  2. Templates : Windows Application
  3. Name : ArquivosTextos
  4. Location : c:\vbnet\ArquivosTextos

- Insira no formulário padrão - form1.vb - 6 botões de comando , e três caixas de textos , conforme figura abaixo :

Os nomes dos controles são :

- Botões de comando -

  • btnLer
  • btnlimpar
  • btnSubstituir
  • btnAnexar
  • btnSalvar
  • btnAbrir
  • btnSair

- Caixas de texto

  • txtArquivo
  • txtLinhas
  • txtNovaLinha

 

 

Agora vamos ao código :

 

1- A primeira linha de código deve ser a que importa o namespace System.IO

Imports System.IO

2- O código do botão - Ler Arquivo .

 

Private Sub btnLer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLer.Click

 

Dim fluxoTexto As IO.StreamReader

Dim linhaTexto As String

 

If IO.File.Exists(txtarquivo.Text) Then

  fluxoTexto = New IO.StreamReader(txtarquivo.Text)

  linhaTexto = fluxoTexto.ReadLine

 

   While linhaTexto <> Nothing

     txtLinhas.Text &= linhaTexto & vbCrLf

     linhaTexto = fluxoTexto.ReadLine

   End While

  fluxoTexto.Close()

Else

  MessageBox.Show("Arquivo não existe")

End If

End Sub

-  Verificamos se o arquivo informado na caixa de texto - txtarquivo.text - existe

- Se o arquivo existir criamos um objeto do tipo IO.StreamReader e lemos cada linha do arquivo

- A seguir exibimos as linhas na caixa de texto - txtLinhas - e fechamos o objeto criado

 

Observação: Se o arquivo texto possuir linhas em branco a rotina do evento btnLer_Click pode falhar neste caso tente a rotina alternativa abaixo:

 

Private Sub btnLer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLer.Click

 

Dim fluxoTexto As IO.StreamReader

Dim linhaTexto As String

 

If IO.File.Exists(txtarquivo.Text) Then

  fluxoTexto = New IO.StreamReader(txtarquivo.Text)

  linhaTexto = fluxoTexto.ReadLine

While Not fluxoTexto.EndOfStream
   txtLinhas.Text &= linhaTexto & vbCrLf
   linhaTexto = fluxoTexto.ReadLine
End While

  fluxoTexto.Close()

Else

  MessageBox.Show("Arquivo não existe")

End If

End Sub

 

3- O código do botão - Limpar

 

Private Sub btnLimpar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLimpar.Click

txtLinhas.Text = ""

End Sub

 

4- O código do botão - Substituir Arquivo

 

Private Sub btnSubstituir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSubstituir.Click

 

Dim fluxoTexto As IO.StreamWriter

Dim linhaTexto As String

 

If IO.File.Exists(txtarquivo.Text) Then

   fluxoTexto = New IO.StreamWriter(txtarquivo.Text)

   fluxoTexto.WriteLine(txtNovaLinha.Text)

   fluxoTexto.Close()

Else

    MessageBox.Show("Arquivo não existe")

End If

 

End Sub

 

- Se o arquivo informado existir substituímos o conteúdo do arquivo exibido pelo texto informado em - txtNovaLinha

 

5- O código do botão - Anexar Linha

 

Private Sub btnAnexar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnexar.Click

 

Dim fluxoTexto As IO.StreamWriter

Dim linhaTexto As String

 

If IO.File.Exists(txtarquivo.Text) Then

   fluxoTexto = New IO.StreamWriter(txtarquivo.Text, True)

   fluxoTexto.WriteLine(txtNovaLinha.Text)

   fluxoTexto.Close()

Else

   MessageBox.Show("Arquivo não existe")

End If

 

End Sub

 

 - Anexa o texto informado em - txtNovaLinha - ao arquivo sendo exibido

 

6- O Código do botão - Salvar

 

Private Sub btnSalvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalvar.Click

 

Dim salvarComo As SaveFileDialog = New SaveFileDialog()

Dim caminho As DialogResult

Dim fluxoTexto As IO.StreamWriter

Dim Arquivo As String

 

salvarComo.CheckFileExists = False

salvarComo.Title = "Arquivos Textos |*.txt |"

caminho = salvarComo.ShowDialog

Arquivo = salvarComo.FileName

 

If Arquivo = Nothing Then

   MessageBox.Show("Arquivo Invalido", "Salvar Como",          MessageBoxButtons.OK)

Else

   fluxoTexto = New IO.StreamWriter(Arquivo)

   fluxoTexto.Write(txtLinhas.Text)

   fluxoTexto.Close()

End If

 

End Sub

 

- Abra a caixa de diálogo - Salvar como - usando SaveFileDialog

- Salva o arquivo com o nome informado

 

7- O Código do botão - Abrir Arquivo

 

Private Sub btnAbrir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAbrir.Click

 

Dim AbrirComo As OpenFileDialog = New OpenFileDialog()

Dim caminho As DialogResult

Dim fluxoTexto As IO.StreamReader

Dim Arquivo As String

 

AbrirComo.Title = "Abrir como"

AbrirComo.FileName = "Nome Arquivo"

AbrirComo.Filter = "Arquivos Textos (*.txt)|*.txt"

caminho = AbrirComo.ShowDialog

Arquivo = AbrirComo.FileName

 

If Arquivo = Nothing Then

   MessageBox.Show("Arquivo Invalido", "Salvar Como", MessageBoxButtons.OK)

Else

   fluxoTexto = New IO.StreamReader(Arquivo)

   txtLinhas.Text = fluxoTexto.ReadToEnd

   txtarquivo.Text = AbrirComo.FileName

   fluxoTexto.Close()

End If

 

End Sub

 

 - abre a caixa de dialogo - Abrir Como - usando o objeto OpenFileDialog

 

8- Para encerrar o código do botão - Sair

 

Private Sub btnSair_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSair.Click

    End

End Sub

 

Sem mais comentários , vamos ficar por aqui !!! Até o próximo artigo  ...

 

Eu sei é apenas VB .NET mas eu gosto..
 


Veja os Destaques e novidades do SUPER DVD VB (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Veja mais sistemas completos para a plataforma .NET  no Super DVD .NET , confira...

Quer aprender C# ??

Chegou o Super DVD C# com exclusivo material de suporte e vídeo aulas com curso básico sobre C#
 

 

Referências:


José Carlos Macoratti