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. |
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") |
Dim
oArquivo as System.IO.File Dim oLeitura as System.IOStreamReader oLeitura = oArquivo.OpenText("c:\teste\teste.txt") |
Write - Inclui uma linha no arquivo texto
WriteLine - Inclui uma linha no arquivo com um caractere de nova linha no fim da linha.
1 - Inicie um novo projeto no Visual Studio.NET com as seguintes características (sinta-se a vontade para alterar a seu gosto.)
- 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 -
- Caixas de texto
|
Agora vamos ao código :
1- A primeira linha de código deve ser a que importa o namespace System.IO
Imports
System.IO2- 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 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:
VB - Gerando arquivos CSV a partir de um DataSet - Macoratti.net
VB.NET - Lendo e escrevendo em arquivo Textos - Macoratti.net
VB.NET - Lendo arquivos textos delimitados e ... - Macoratti.net
VB.NET - Lendo arquivos textos delimitados e ... - Macoratti.net
Migrando arquivos textos delimitados para XML - Macoratti.net